新しいタブでリンクを開くというマウスホイールボタンのデフォルトのアクションを無効にする方法を見つけようとしています。
それは可能ですか?
特にミドルクリックをチェックする汎用クリックイベントハンドラーをバインドします。そのイベントハンドラー内で、次を呼び出しますe.preventDefault()
。
$("#foo").on('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
}
});
すべてのブラウザがこのデフォルトのアクションの防止をサポートしているわけではないことに注意してください。私にとっては、Chromeでのみ機能します。Firefox、Opera、IE9はすべて、マウスの中クリックでクリックイベントを発生させません。彼らはmouseupとmousedownを上げます。
これは私のために働きます...
$(document).on("mousedown", "selector", function (ev) {
if (ev.which == 2) {
ev.preventDefault();
alert("middle button");
return false;
}
});
JAVASCRIPTを使用してマウスホイールイベントを無効にします。
IEの場合:
document.attachEvent('onmousewheel', function(e){
if (!e) var e = window.event;
e.returnValue = false;
e.cancelBubble = true;
return false;
}, false);
Safariの場合:
document.addEventListener('mousewheel', function(e){
e.stopPropagation();
e.preventDefault();
e.cancelBubble = false;
return false;
}, false);
オペラで:
document.attachEvent('mousewheel', function(e){
if (!e) var e = window.event;
e.returnValue = false;
e.cancelBubble = true;
return false;
}, false);
Firefoxの場合:
document.addEventListener('DOMMouseScroll', function(e){
e.stopPropagation();
e.preventDefault();
e.cancelBubble = false;
return false;
}, false);
私のコード:
$(document).on('auxclick', 'a', function(e) {
if (e.which === 2) { //middle Click
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
return true;