d3强制有向图永久禁用选择

时间:2016-03-11 15:51:56

标签: javascript d3.js

我终于让d3 force directed graph做了我想要的一切:

  • 拖动空白以平移
  • 在空白处滚动滚轮以缩放
  • 拖动节点以移动节点
  • shift-drag节点以创建指向节点的链接(注意:在小提琴中,结果窗口svg必须已经集中[单击它]才能使其正常工作)
  • 点击节点打开侧边栏(未在小提琴中实现)
  • 双击节点以扩展邻居(未在小提琴中实现)
  • 双击空格以创建新节点
  • 鼠标悬停节点弹出节点信息

但是,它也在做一些我不想要的事情:通过在网页上永久添加style='-moz-user-select: none'属性来永久停用网页上的所有文字选择每当我点击节点或链接时,<html>标记(在Firefox中)。添加-*-user-select: none样式属性似乎是标准d3行为(例如here),但d3通常会在click事件完全结束后将其删除。如果您单击或拖动背景,这就是我的代码中的工作方式(以临时方式),但是当您单击节点或链接时,style标记将永久添加。

重要提示:在小提琴中,style属性被添加到IFrame的<html>标签中,而不是主页面。 (即body&gt; form#show-result&gt; div#content&gt; fieldset.column.right&gt; div#result.window.bottom&gt; iframe&gt; html

我认为问题与第364行的d3node.call(d3force.drag)调用有关,但如果我把它拿出来,我就不能再拖动节点了。

我可以通过手动设置<html style=''>属性来解决问题,但我想谈谈问题的核心,因为我可能在d3中做错了什么。我不太了解d3的事件处理行为。

0 个答案:

没有答案