2017-07-04 15 views
0

タイトルはかなりよく、ドラッグ動作が設定されている選択肢にマウスイベントを送出しようとしています "TypeError:例はスニペットです。(D3) "mousedown"イベントをドラッグ動作で選択するとエラーが発生する

マウスカーソルをドラッグしてマウスボタンを2回押さずにドラッグする要素にマウス操作を渡す必要があるため、回避策を考えています。すべての入力は非常に感謝しています。

d3.select('#dragable').call(d3.drag().on('drag', function() { 
 
    d3.select(this).style('left', d3.event.x + 'px'); 
 
    d3.select(this).style('top', d3.event.y + 'px'); 
 
})) 
 

 
d3.select('#dragable').dispatch('mousedown');
#dragable { 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    background: red; 
 
    width: 50px; 
 
    height: 50px; 
 
}
<script src="https://d3js.org/d3.v4.min.js"></script> 
 
<div id="dragable"> 
 

 
</div>

EDIT:

私は、デバッガで周りに手を加え、そしてディスパッチャから発射するとき、D3-ドラッグに渡されたCustomEventオブジェクトはビュー変数が欠落しているようです。だから理論的にはそれに修正することができますウィンドウオブジェクトを追加します。私はそれをどうやって行うのか、あるいはd3のソースを変更せずにそれをやり遂げる方法は知らない。 selection.dispatch()がカスタムをディスパッチするために使用されているため

.on('start', function() { dispatch.call("mousedown", this); });

dragに機能を追加し、

var dispatch = d3.dispatch('mousedown'); 
dispatch.on('mousedown', function(){ }); 

答えて

-1

後にする

0

てみてください、私は仕事のための間違ったツールを使用していたが判明しますイベント。マウスイベントをディスパッチするには、MouseEventで.dispatchEvent(event)メソッドを使用しなければなりませんでした。

+0

残念ながら私はまだ同じエラーが発生します。デバッガのエラーによるとnodrag.js(https://github.com/d3/d3-drag/blob/master/src/nodrag.js)の5行目にスローされ、マウスで起動された場合はビュー変数のWindowオブジェクトが取得されますしかし、このオブジェクトはディスパッチから解雇されたときには欠落しています。 –