添加onRightClick到JavaScript库Hypertree



我目前正在研究(这里有一个回购)一个超树图,我想从JavaScript InfoVis工具包中使用它。问题如下:我将特定的事件添加到Hypertree中,即onClickonRightClick

 Events: {
          enable: true,
          onClick: function(node, eventInfo, e) {
              ht.controller.onComplete();
          },
          onRightClick: function(node, eventInfo, e) {
              ht.controller.onComplete();
          },
      },

然后我简单地将事件处理程序附加到Hypertree标签上,只是稍微修改了演示代码:

//Attach event handlers and add text to the
  //labels. This method is only triggered on label
  //creation
  onCreateLabel: function(domElement, node){
      domElement.innerHTML = node.name;
      $jit.util.addEvent(domElement, 'click', function () {
          ht.onRightClick(node.id, {
              onComplete: function() {
                  ht.controller.onComplete();
              }
          });
      });

      $jit.util.addEvent(domElement, 'rclick', function () {
          ht.onClick(node.id, {
              onComplete: function() {
                  ht.controller.onComplete();
              }
          });
      });
  },

这很直接。Hypertree事件的文档在Options.Events.js中。现在我加载页面…我有左键。但是没有右键点击……我希望RightClicks移动图形和onClicks打开一个链接从DOM元素节点。谁能给我点提示吗?

最好的,马吕斯

$jit.util。addEvent(obj, type, fn)是obj的快捷方式。addEventListener(type, fn, false)。所以你试图绑定到'onrclick'事件。但是javascript中没有这样的事件。检测右键你只需要替换你的'rclick'到'mouseup',在回调中你应该检查按钮是正确的。下面是代码:

$jit.util.addEvent(domElement, 'mouseup', function (event) {
   // detecting right button
   if (event.button != 2) {
       return;
   }
   ht.onClick(node.id, {
       onComplete: function() {
           ht.controller.onComplete();
       }
   });
});

你也不需要使用Options.Events.js来达到这个目的,所以你可以删除这些代码

我在"Events"部分看到的唯一错误是onRightClick后面的逗号。如果你使用IE>8,它真的不会影响代码,但值得一试。

好,这就是为什么我认为你的解决方案不起作用的答案。

$jit.util.addEvent(domElement, 'rclick', function ()

没有'rclick'这样的jquery事件

通常使用jquery,您将使用以下命令检测右键单击:

$('#element').mousedown(function(event) {
 if (event.which === 3) { 
  alert('Right mouse button pressed');
 }
});

因此在您的示例中,您将使用'mousedown'而不是'rclick'。但是,查看addEvent:

的文档
$jit.util.addEvent(elem, 'click', function(){ alert('hello'); });

这个例子似乎表明事件对象不能传递给addEvent的函数参数,这意味着它不可能检测到鼠标右键已经被点击。

可能值得将您的问题直接发送给InfoVis的作者,因为我也很有兴趣看看是否有可能连接鼠标右键

相关内容

  • 没有找到相关文章

最新更新