Пользовательский JS приложения Dash не может найти dcc.Store для обратного вызоваJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский JS приложения Dash не может найти dcc.Store для обратного вызова

Сообщение Anonymous »

Я создаю веб-приложение, которое должно предоставлять коду Python обратный вызов всякий раз, когда пользователь щелкает правой кнопкой мыши в веб-приложении.
Я пытался сделать это с помощью dcc.Store и записать в сохранить в событии контекстного меню. Все идет нормально. Я поместил этот специальный код, который перехватывает событие контекстного меню в assets/custom.js, однако, когда я пытаюсь получить хранилище с помощью var store = document.getElementById("contextmenu_data");, он возвращает значение null, поэтому никогда вообще-то пишу что-то в магазин. Что может быть не так?
Вот MRE для кода Python и JS:
Python
import dash
from dash import dcc, html
from dash.dependencies import Input, Output

import threading

app = dash.Dash(__name__)

app.layout = html.Div([
html.Div(id="output"),
dcc.Store(id='contextmenu_data'),
])

@app.callback(Output("output", 'children'),
Input("contextmenu_data", 'data'),
)
def right_click_action(data):
print(f"right_click_action called with data: {data}")
if data:
return f"coordinates are {data}"
return "no rightclicks have happened"

def run_dash():
app.run_server(debug=False)

if __name__ == '__main__':

server = threading.Thread(target=run_dash, daemon=True)
server.start()


js
window.onload = function() {
document.addEventListener('contextmenu', function(event) {
event.preventDefault();
var store = document.getElementById("contextmenu_data");
console.log(store);
if (store) {
var data = {x: event.clientX, y: event.clientY};
store.setAttribute('data', JSON.stringify(data));
store.dispatchEvent(new CustomEvent('data'));
}
});
};



Подробнее здесь: https://stackoverflow.com/questions/793 ... r-callback
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Остановить Plotly Dash.dcc.Store(), запускающий обновление при загрузке страницы.
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Динамически обновляйте «initial_visible_month» из dcc.DatePickerRange. Python Plotly Dash
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как добавить текст в компонент загрузки Dash (DCC.Loading)
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Dash Loading в Dash Store?
    Anonymous » » в форуме Python
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Springboot: URL обратного вызова не одобрен для этого клиентского приложения. Утвержденные URL -адреса обратного вызова
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»