10

私は/デバッグを更新し、私のドラッグ可能なスクリプトの機能を拡張し、私は次のような結果を達成できるようにする必要がありますしています:mousedownでrightmouseボタンイベントを検出するにはどうすればよいですか?

whatever.onRightMouseButtonMousedown = preventDefault(); 

私はしかし、私がいることを知って、無駄に多くの研究を行っていますjquery-ui draggableを使用すると、マウスの右ボタンでマウスを動かしたときに要素をドラッグすることができなくなるため、これを行うことができます。私はこの能力を模倣し、それが現在どのように働いているかを学び、必要に応じて将来的にそれを実現できるようにしたい。

注:jqueryまたはjquery-ui draggable(私は既にそれに精通しています)を使用する方法についての情報を与えないでください、それらがどのように実装されたか、またはマウスの右ボタンでマウスをクリックすると、マウスの右ボタンで要素がドラッグされないようにすることができます。

+0

これは重複していません。質問は、jQueryを使用せずにそれを行う方法を具体的に求めています。 – person0

答えて

17

は通常、あなたはそれが唯一のマウスクリックのいずれかのタイプを操作したいでしょう。したがって、コールバックに渡されるイベントには、クリックの種類を区別できるプロパティがあります。

このデータは、ボタンイベントデータのプロパティに戻されます。どの値がどのデータを表すかを調べるには、MDNを参照してください。

したがって、あなたは右クリックを無効にしない、あなたの代わりにのみ、左クリックのためのあなたの機能を有効にします。ここでは[悪い]の例です:jQueryので

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のunifies the values across browsers、左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" />

+1

ありがとう、私は実際にあなたのコメントを確認する前に戻って来る前にこれを理解しました。単にそれを追加して、ブラウザ(少なくとも近代的なブラウザであれば)を越えて動作させるようにしておけば、 'event.which'と' event .button'、これは私がそれを解決し終わった方法です: 'if(evt.which === 3 || evt.button === 2){evt.preventDefault();' – person0

3

非常に単純ではありません。 Quirksmode.orgにはarticle about event propertiesがあります。

「どのマウスボタンがクリックされましたか」の下に表示されます。/'右クリック'。ブラウザによって異なります。あなたがマウスイベントのいずれかの種類を持っているとき

+6

これはしばらく前のことですが、私はそのリンクをクリックして、この記事が古代であることを意味する "エクスプローラ6でもまだサポートしていません"という行を見ました。 –

3

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; 
    } 
}​ 

demo

関連する問題