2009-04-01 22 views
58

ブラウザのコンテキストメニューを無効にした後、右クリックしていくつかのアクションをトリガするにはどうすればよいですか?イベントをマウスの右ボタンでクリックする

私はこれを試しました。 。 。

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
     $('.alert').fadeToggle(); 
     return false; 
    }); 
}); 
+1

を参照してくださいhttp://stackoverflow.com/a/2725963/287948 –

+0

を関数が返すような何かをしようとしています! – Tom

答えて

93

一切のjQueryでも、oncontextmenuイベントハンドラを内蔵していますが、このような何かを行うことができますがあります:

$(document).ready(function(){ 
    document.oncontextmenu = function() {return false;}; 

    $(document).mousedown(function(e){ 
    if(e.button == 2) { 
     alert('Right mouse button!'); 
     return false; 
    } 
    return true; 
    }); 
}); 

基本的に私は、ブラウザのコンテキストメニューを無効にするには、DOMエレメントのも、oncontextmenuイベントをキャンセルしませんjQueryを使ってmousedownイベントをキャプチャします。そこでは、どのボタンが押されたのかをイベント引数で知ることができます。

上記の例を試すことができますhere

+0

'$(document)[0]'は 'document'と同じではありませんか? – configurator

+0

@ configurator、はい、それはタイプミスです。ありがとう:) – CMS

+1

あなたの答えは間違っています:http://jsfiddle.net/Zmdzv/ – andrewrk

0

contextmenuはイベントですか?

I(左= 0、1 =中央、2 =右)が押されたボタンを決定するためにMouseEventボタン性をつかむその後onmousedown又はonclickを使用します。

47

関数が早すぎます。私は以下のコードにコメントを追加しました:

$(document).ready(function(){ 
    $(document).bind("contextmenu",function(e){ 
     return false; 
     $('.alert').fadeToggle(); // this line never gets called 
    }); 
}); 

次の行でreturn false;を交換してみてください。

+6

+1、バインディング 'contextmenu'がサポートされました! –

+0

"2009年4月1日尋問 - これは重要ではないと私は考えている。 ;) –

+0

@zourtneyあなたはそれをどう結論づけますか? jQueryのドキュメントでは、 'contextmenu'をサポートすることについて何も言及していません... – bart

15

イベントハンドラを使用するだけです。このような何か作業をする必要があります:

$('.js-my-element').bind('contextmenu', function(e) { 
    e.preventDefault(); 
    alert('The eventhandler will make sure, that the contextmenu dosn't appear.'); 
}); 
2

私はここで、この答えを見つけて、私はこのようにそれを使用しています。単純に次のようにこれを行うページのすべての画像上で右クリックしてコンテキストメニューを無効にするには

$("#newmagazine").customContextMenu(function(){ 
    alert("some code"); 
}); 
1
document.oncontextmenu = function() {return false;}; //disable the browser context menu 
$('selector-name')[0].oncontextmenu = function(){} //set jquery element context menu 
0

:私のページのスクリプトから

$.fn.customContextMenu = function(callBack){ 
    $(this).each(function(){ 
     $(this).bind("contextmenu",function(e){ 
      e.preventDefault(); 
      callBack(); 
     }); 
    }); 
} 

コード:マイライブラリから

コード:

jQuery(document).ready(function(){ 
    // Disable context menu on images by right clicking 
    for(i=0;i<document.images.length;i++) { 
     document.images[i].onmousedown = protect; 
    } 
}); 

function protect (e) { 
    //alert('Right mouse button not allowed!'); 
    this.oncontextmenu = function() {return false;}; 
} 
0

.contextmenu方法: -

てみ

<div id="wrap">Right click</div> 

<script> 
$('#wrap').contextmenu(function() { 
    alert("Right click"); 
}); 
</script> 

.mousedown方法を次のように - あなたは

$('#wrap').mousedown(function(event) { 

     if(event.which == 3){ 
      alert('Right Mouse button pressed.'); 
     } 
}); 
関連する問題