2

次のコードをノード形状に適用して、強制指向レイアウトでShift+Click アクションを作成しようとしています。

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

コードは正しく機能する傾向がありますが、ブラウザーがクラッシュすることがあります (Chrome と Safari の両方がクラッシュします)。次のシーケンスの後にクラッシュが発生するようです。

  • カーソルをクリックしてノードの外側の任意の場所にドラッグします (テキスト カーソルが表示されるようにします)。
  • ノードの外側でカーソルを押しながら Shift キーを押したままにします (テキスト カーソルは引き続き表示されます)。
  • ノードをクリック

更新: このクラッシュは私のコードだけのものではないようです。次の操作を行うと、任意の強制的なレイアウトでブラウザーをクラッシュさせることができます: シフトをずっと押したままにして、空のスペースをクリックし、ノードをクリックします。

組み込みのシフト機能が D3 の邪魔になっているのではないでしょうか? たとえば、alt キーは上記のコードで正常に機能します。

ありがとう!

4

1 に答える 1

1

同様の状況に遭遇しましたが、これは Chrome のバグのようです: https://bugs.webkit.org/show_bug.cgi?id=114745

Shift キーを押しながらクリックすると、現在のカーソル位置までのすべてのテキストが選択される Webkit のデフォルトの動作が、クラッシュのメカニズムである可能性があります。

d3 ではまだ詳細を追跡するのに時間を費やしていませんが、バグ レポートが示唆しているように、以前に焦点を当てていた要素に「blur」を呼び出すことで、今のところ回避できる可能性があります (バグ レポートを参照)。

于 2013-09-11T22:32:26.340 に答える