2016-11-30 10 views
1

私はドラッグウィジェットを構築しています。インタラクティブな要素から 'mouseup'/'mousedown'イベントを待ち受けます。イベントを聞かずにマウスボタンが押されていないかどうかを確認しますか?

ほとんどの場合、うまく動作しますが、私は 'mouseup'が少し信頼できないと判断しました。マウスボタンがアップ/ダウンしているかどうかを確認するイベントに依存しない方法はありますか?私はタイマーやmousemoveイベントにアタッチして、それを確実にすることができます。

答えて

0

イベントを使用する必要がありますが、イベント内からスクリプトを作成して、後でテストできるマウスの状態を割り当てることができます。

var isMouseDown = false; 
document.addEventListener("mousedown", function() 
{ 
    isMouseDown = true; 
}); 
document.addEventListener("mouseup", function() 
{ 
    isMouseDown = false; 
}); 
if (isMouseDown == true) { ... } 
+1

'document'は' document.body'よりも優れていますが、これはビューポートを満たしていない可能性があります。 (そして '.onxyz = ...'ハンドラはほかの人とうまくやっていません。) –

0

イベントが独立してマウスボタンが上下しているかどうかを確認する方法はありますか?

いいえ、ありません。しかし、コードをドラッグすると、mouseupのリスニングの最善の策は、ドラッグしている要素ではなく、ドキュメント全体です。マウスのリリースがウインドウの外にある場合でも、イベントは発生しませんが、マウスが突然動かされ、リリースが発生したときに要素の外に出るようにリリースされた場合にはあなたはなります。

また、当然のことながらたくさんを発射し、またボタンがダウン(イベントオブジェクトのプロパティbuttons経由)であるかどうかがわかりますこれ、mousemoveのために聞くことができます。

関連する問題