cytoscape.js - 有没有办法确定事件是否由用户操作发起?
问题描述
const cyEvents = 'move select drag unselect viewport';
cy.on(cyEvents, (e) => {
// e.type is 'viewport' on graph render
});
使用上面的代码,当图形呈现时,内部事件处理程序会立即触发,即使用户根本没有与图形交互。
有没有办法阻止这个事件触发,或者最好有办法告诉事件的来源,例如 Cytoscape 是否导致事件以编程方式触发,或者它是由用户与图形交互引起的(鼠标事件, ETC。)?
解决方案
如果这对您有用,您可以为每种类型的事件设置一个侦听器。
cy.on('tap', 'node', function(evt){
let node = evt.target;
console.log( 'tapped ' + node.id() );
});
这已经在文档中提到。另外,不要忘记删除你的听众cy.off(
。如果您多次添加侦听器,它们将被多次调用。
--- 编辑 1 --- 再次在文档中,它说
因此,在事件处理函数中,您可以检查这些参数是否存在。另外,我认为您的问题尚不清楚。也许你可以准备一个最小的可重复样本。
此外,如果您想将图表标记为脏,您可以简单地侦听仅由直接用户交互触发的事件。什么时候被解雇,你可以设置你的标记。
推荐阅读
- sql - 在 postgres 数组中查找值(有些必须在,有些不能在同一个查询中)
- javascript - 在 ReactJs 中复制到剪贴板不适用于弹出窗口/模式
- javascript - 如何根据javascript中的值获取匹配的数组对象
- sql - 将行某些值转置为列
- google-maps - 使用 Google Directions API 显示地点名称
- python - 如何在散点图中使用轴上的字符串对值进行排序
- android - android studio 4.0 上的 Gradle 同步失败
- amazon-web-services - ec2 实例中的新卷未反映
- mongodb - 根据时间对多个集合进行查询和排序
- javascript - 在提交表单时进行表单验证时,组件没有在 React 中更新