/ /マウスダウン時に右マウスボタンイベントを検出するにはどうすればよいですか? --javascript、mouseevent、draggable、jquery-ui-draggable、右クリック

マウスダウンで右マウスボタンイベントを検出する方法を教えてください。 - JavaScript、mouseevent、ドラッグ可能、jquery-ui-draggable、右クリック

ドラッグ可能なスクリプトの機能を更新/デバッグおよび拡張していますが、次の結果を達成できる必要があります。

whatever.onRightMouseButtonMousedown = preventDefault();

私は無駄に多くの研究をしました、ただし、jquery-uiのドラッグ可能を使用すると、マウスの右ボタンでマウスダウンしたときに要素をドラッグできなくなるため、これが可能であることはわかっています。この機能を模倣し、その仕組みを学び、現在および将来必要に応じて実装できるようにしたいと思います。

注意:jqueryまたはjquery-uiドラッグ可能の使用方法(私はすでにそれをよく知っています)、それらがどのように実装されているか、またはマウスの右ボタンでマウスダウンの検出を実装する方法についての情報を教えてくださいマウスの右ボタンで要素がドラッグされないようにするためです。

回答:

回答№1の17

通常、何らかのマウスイベントがある場合、1種類のマウスクリックでのみ動作するようにする必要があります。したがって、コールバックに渡されるイベントには、クリックの種類を区別できるプロパティがあります。

このデータは、 ボタン イベントデータのプロパティ。見る MDN どの値がどのデータを表すかを見つけるため。

したがって、右クリックを無効にするのではなく、左クリックの機能のみを有効にします。[悪い]例を次に示します。

element.onmousedown = function(eventData) {
if (eventData.button === 1) {
alert("From JS: the (left?) button is down!")
}
}

jQueryの同等のものは次のとおりです。

$("div").mousedown(function(eventData) {
if (eventData.which === 1) {
alert("From JQuery: which=" + de.which)
}
});

jqueryを使用しない場合、返される値はブラウザによって異なることに注意してください。jQuery ブラウザ間で値を統一します、左に1、中央に2、右に3を使用:

 element.onmousedown = function(eventData) {
if (eventData.button === 0) {
console.log("From JS: the (left?) button is down!")
}
}

$("#element").ready(function() {
$("div").mousedown(function(de) {
console.log("From JQuery: which=" + de.which);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="element" style="width: 100px; height: 100px; background-color: blue" />


回答№2については4

html:

<a href="#" onmousedown="mouseDown(event);">aaa</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​

JavaScript:

function mouseDown(e) {
e = e || window.event;
switch (e.which) {
case 1: alert("left"); break;
case 2: alert("middle"); break;
case 3: alert("right"); break;
}
}​

デモ.


回答№3の場合は3

それほど単純ではありません。Quirksmode.orgには イベントのプロパティに関する記事.

「どのマウスボタンがクリックされましたか?」の下を見てください。 / "右クリック"。ブラウザによって異なります。