Я создаю веб-приложение, которое должно предоставлять коду 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
Пользовательский JS приложения Dash не может найти dcc.Store для обратного вызова ⇐ Javascript
Форум по Javascript
1736435763
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'));
}
});
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79343137/dash-app-custom-js-cannot-find-the-dcc-store-for-callback[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия