请教大佬 js 和 Python 鼠标单击和双击 callback 问题

2022-10-02 15:08:35 +08:00
 shinession
下面是 dash—tabulator JS 里鼠标单击和双击 callback 设置代码,

window.myNamespace = Object.assign({}, window.myNamespace, {
tabulator: {
cellClick: function (e, cell, table) {
// console.log(cell)
table.props.setProps({"cellClick" : [cell._cell.column.field, cell._cell.row.data]})
},
cellDblClick: function (e, cell, table) {
// console.log(cell)
table.props.setProps({"cellDblClick" : [cell._cell.column.field, cell._cell.row.data]})
}
}
});

python 里代码如下
@app.callback(
[Output("app-content", "children")],
[Input('tabulator', 'cellClick'), Input('tabulator', 'cellDblClick')],
prevent_initial_call=True,
)
def function(cell_cllick,cell_dbl_click):
pass

问题是鼠标单击优先级高于双击,如果我同时设置点击表格事件,单击肯定触发,双击设置就无效了。
如果 js 里单击事件加上延迟,哪怕 1ms 延迟,python 里单击 callback 又无法生效,请教大佬们是如何解决优先级问题的
2045 次点击
所在节点    Python
3 条回复
Torpedo
2022-10-03 11:38:40 +08:00
可以监听 mousedown 和 up ,然后自己判断是否是单机或者双击。
或者单击直接加个几百 ms 的锁,如果这期间没有双击,就认为是单击
shinession
2022-10-03 12:19:25 +08:00
@Torpedo 大佬指点下如何加锁并且 python 里 callback 有 Input ,我在 JS 里加 sleep(500)之类的总是会破坏 Input
Torpedo
2022-10-03 15:53:15 +08:00
@shinession const clickFlagObj={lastClick:''}

cellClick 的时候设置一下上面的变量,然后 dbClick 的时候读一下上面你设置的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884371

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX