Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3上下文菜单未触发_Javascript_Jquery_D3.js_Twitter Bootstrap 3 - Fatal编程技术网

Javascript d3上下文菜单未触发

Javascript d3上下文菜单未触发,javascript,jquery,d3.js,twitter-bootstrap-3,Javascript,Jquery,D3.js,Twitter Bootstrap 3,我只是将引导和jquery添加到我的d3脚本中。它大部分工作正常,但我注意到我不再获得右键单击/上下文菜单事件。我的设置代码如下所示: this.svg_canvas = d3.select("#" + this.container_id) .append("svg") .attr("width", this.width) .attr("height", this.height) .on("click", this._selectNodes.bind(this)) .on("

我只是将引导和jquery添加到我的d3脚本中。它大部分工作正常,但我注意到我不再获得右键单击/上下文菜单事件。我的设置代码如下所示:

this.svg_canvas = d3.select("#" + this.container_id)
  .append("svg")
  .attr("width", this.width)
  .attr("height", this.height)
  .on("click", this._selectNodes.bind(this))
  .on("mousedown", this._handleMouseDown.bind(this))
  .on("contextmenu", function(data, index) { graph_view._showContextMenu(data, index); })
  .call(this.zoom_behavior.bind(this))
;
值得一提的是,所有其他手势——单击、鼠标向下和缩放——似乎都工作正常


有没有关于在哪里查找或如何调试的想法?

我恐怕这不是一个真正的答案,但既然有人对这个问题投了赞成票,我有义务告诉他们我发现了什么

我将调试语句放在.on('contextmenu')方法中,如下所示:

var svg_canvas = d3.select('#canvas-id')
  .append('svg')
  ...
  .on('contextmenu', function(d) {
      console.log('>>> contextmenu', d);
      handleContextMenu(d);
  })
  .call(zoomBehavior)
;
。。。我注意到它正在调用我的handleContextMenu(),但我的菜单没有出现。我花了一段时间才意识到我已经注释掉了生成菜单的HTML,但之后修复就很容易了

仍然让我困惑的是,d3没有在这一行上提出错误:

var context_menu = d3.select('#context-menu')
    .on('mouseup', ...)

。。。尽管DOM中没有上下文菜单id。

我恐怕这不是一个真正的答案,但既然有人对这个问题投了更高的票,我有义务告诉他们我发现了什么

我将调试语句放在.on('contextmenu')方法中,如下所示:

var svg_canvas = d3.select('#canvas-id')
  .append('svg')
  ...
  .on('contextmenu', function(d) {
      console.log('>>> contextmenu', d);
      handleContextMenu(d);
  })
  .call(zoomBehavior)
;
。。。我注意到它正在调用我的handleContextMenu(),但我的菜单没有出现。我花了一段时间才意识到我已经注释掉了生成菜单的HTML,但之后修复就很容易了

仍然让我困惑的是,d3没有在这一行上提出错误:

var context_menu = d3.select('#context-menu')
    .on('mouseup', ...)

。。。尽管DOM中没有上下文菜单id。

只是一个猜测;您的
mousedown
代码是否可能阻止触发默认的
contextmenu
事件?Doh。我被放错地方的调试语句愚弄了:
mousedown
contextmenu
事件触发得很好。错误的css阻止显示上下文菜单。往前走,这里没什么可看的……只是胡乱猜测;您的
mousedown
代码是否可能阻止触发默认的
contextmenu
事件?Doh。我被放错地方的调试语句愚弄了:
mousedown
contextmenu
事件触发得很好。错误的css阻止显示上下文菜单。继续,这里没有什么可看的…您基本上写了-对于匹配select run on方法的元素。没有匹配不是一个错误,只是一个No-op。您基本上为匹配select的元素编写了-run-on方法。不匹配不是错误,只是不可操作。