我终于让d3 force directed graph做了我想要的一切:
但是,它也在做一些我不想要的事情:通过在网页上永久添加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的事件处理行为。