【问题标题】:d3.event.shiftKey causing crash with Force-Directed Layoutd3.event.shiftKey 导致强制导向布局崩溃
【发布时间】:2013-09-06 15:20:33
【问题描述】:

我正在尝试在强制导向布局中创建一个 Shift+Click 操作,并将以下代码应用于节点形状:

.on("click",function(){
        if(d3.event.shiftKey){
                //do something
        }
});

代码运行正常,但偶尔会导致浏览器崩溃(Chrome 和 Safari 都崩溃)。似乎崩溃发生在以下序列之后

  • 在节点外的任意位置单击并拖动光标(以便显示文本光标)
  • 在节点外按住光标的同时按住 shift 键(仍显示文本光标)
  • 点击节点

更新:看来这个崩溃不是我的代码独有的。通过执行以下操作,我可以在任何强制导向的布局上使浏览器崩溃:在一直按住 shift 的同时,单击空白处,单击节点。

也许某些内置的移位功能妨碍了 D3?例如,alt 键适用于我上面的代码。

谢谢!

【问题讨论】:

  • 你能发个小提琴或块吗?
  • 这对我来说听起来像是一个错误。您是否检查过相应的错误跟踪器?
  • 从这个现有的小提琴 (jsfiddle.net/zuzzy/dFd3H/2) 中,我发现问题不仅限于我的 Shift+Click 事件 - 它似乎发生在所有强制导向的布局中。在以下情况下按住 shift:单击空白处,单击节点 - 浏览器崩溃。

标签: d3.js force-layout


【解决方案1】:

我们遇到了类似的情况,它似乎是一个 Chrome 错误:https://bugs.webkit.org/show_bug.cgi?id=114745

这可能是 webkit 中的默认行为,即 shift-click 选择所有文本直到当前光标位置是崩溃的机制。

我们还没有花时间跟踪 d3 中的细节,但正如错误报告所暗示的那样,现在可以通过对任何以前关注的元素进行“模糊”调用来绕过它(参见错误报告)。

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多