如何在 vis.js 中使用带有单击事件的修饰符



是否可以在 vis.js 网络中发生 ALT+click、CTL+SHIFT+Click 等事件?如何定义和使用使用此类事件的函数?

是的,这是可能的,尽管没有记录。 你要做的是获取原始的JavaScript事件。 一旦你有了它,你就可以部署通常的技巧。

对于声明的点击事件,假设您network.on('click', function(e) {...});到达原始事件let oEvent = e.event.srcEvent;

然后你可以在回调中测试oEvent.shiftKey等。

这也适用于双击。请注意,对于悬停事件,您可以使用 let oEvent = e.event;(无srcEvent(访问原始 JS 事件。

如有疑问,只需在浏览器中打开JS控制台并探索e数据结构即可。

顺便说一句,我还想推荐这篇关于如何在 vis.js 中破译doubleClick click的文章,因为doubleClick也会触发click! 我已将其包含在以下代码片段中。

总结:

/* DECLARING EVENTS */
network.on('doubleClick', function(e) {onDoubleClick(e)});
network.on('click', function(e) {onClick(e)});
network.on('hoverNode', function (e) {doOnHoverNode(e)});
network.on('blurNode', function (e) {doOnBlurNode(e)});
/* MANAGING DOUBLE VS SINGLE CLICK */
let doubleClickTime = 0;
const threshold = 200;
function onClick(e) {
  const t0 = new Date();
  if (t0 - doubleClickTime > threshold) {
    setTimeout(function () {
      if (t0 - doubleClickTime > threshold) {
        doOnClick(e);
      }
    },threshold);
  }
}
function onDoubleClick(e) {
  doubleClickTime = new Date();
  doOnDoubleClick(e)
}
/* DEFINE CALLBACKS HERE */
function doOnClick(e) {
  // fetch id of node clicked upon
  let nodeId = e.nodes[0];
  // fetch original JS event
  let jsEvent = e.event.srcEvent;
  // match modifiers
  let  shift = jsEvent.shiftKey;
  let  alt = jsEvent.altKey;
  let  meta = jsEvent.metaKey;
  // do callback
  if (meta) {
    if (shift)
      // do stuff
    else
      // do stuff
  }
}
function doOnDoubleClick(e) {
  // don't delete the following line!
  doubleClickTime = new Date();
  // the rest just like click
function doOnHoverNode(e) {
  // fetch id of node clicked upon
  let nodeId = e.nodes[0];
  // fetch original JS event
  let jsEvent = e.event;
  // the rest just like click
}
function doOnBlurNode(e) {
  // ditto doOnHoverNode
}

希望这有帮助。

在网络模块中使用 vis.js 将键盘修饰符与click事件一起使用(请参阅 http://visjs.org/docs/network/#Events(。

相关内容

  • 没有找到相关文章

最新更新