ユーザーが特定のリンクを中クリックして新しいタブを開くことができないようにしたい。私は次のことを試しました:
$(window).on('mouseup', '.sptDetails', function(e){
e.preventDefault();
if(e.button == 1){
return false;
}
});
これはうまくいかないようです。
ユーザーが特定のリンクを中クリックして新しいタブを開くことができないようにしたい。私は次のことを試しました:
$(window).on('mouseup', '.sptDetails', function(e){
e.preventDefault();
if(e.button == 1){
return false;
}
});
これはうまくいかないようです。
これは、jQuery とブラウザーの残念な組み合わせです。新しいタブが開かないようにするには、click
(ではなくmouseup
) イベントを使用する必要がありますが、jQueryは左ボタン以外のマウス ボタンのデリゲート クリック ハンドラーを実行しません。
// Avoid non-left-click bubbling in Firefox (#3861)
if ( delegateCount && !(event.button && event.type === "click") ) {
できることは、デリゲート以外のハンドラーを使用して、ターゲット要素を自分で確認することです: http://jsbin.com/ojoqap/10/edit。これは、少なくとも Chrome で動作します (@Abraham に触発されました)。
$(document).on("click", function(e) {
if($(e.target).is("a[href]") && e.button === 1) {
e.preventDefault();
}
});
これは悪い考えであることを忘れないでください。これを行うことはお勧めしません。上記のコメントを参照してください。ただし、ミドルクリックを検出する方法は次のとおりです。
if (e.which == 2)
return false
「親」ページにナビゲーションが残っていることを確認しようとしていると思います。これに別の角度からアプローチするのが適切かもしれないと思います。
中クリックを防ぐ代わりに、JS以外のユーザーについて心配する必要がないと仮定すると、ajax呼び出しを介してコンテンツをロードし、現在のページに挿入することをお勧めします。
これは、使用可能なままにして、小さなjavascriptで実現できます(ただし、JSをオフにしているユーザーにとっては理想的ではないかもしれません)
考えるべきことです。このアイデアを改善する方法はたくさんあると思います。
HTML:
<a href="/mylink" id="href-load-content">
<div id="content-pane"></div>
Javascript:
$(function() {
$('#href-load-content').data('href', function() { return $(this).attr('href') } )
.attr('href', 'javascript:return;')
.on('click', function() {
$.get($(this).data('href'), function(msg) { $('#content-pane').html(msg); });
});
});
こんにちは、このリファレンスを見てください..
http://delphi.about.com/od/objectpascalide/l/blvkc.htm
中央のマウスのキーコードは 4 です
だからあなたはこのように試すことができます
if(e.which==4|| e.keycode==4)
e.returnValue=false;
// <a href="http://google.com" id="google">Google</a><br> <a href="http://bing.com" id="bing">Bing</a>
$(function(){
$(document).on("click", function(e){
if($(e.target).is("#google") && e.button===1)
e.preventDefault()
})
})