ページにリンクのグループがあります。ユーザーがリンクをクリックすると、非同期リクエストがトリガーされ、ページのコンテンツ領域がレスポンス html で更新されます。
これは問題なく動作しますが、ユーザーが「中ボタン」(またはマウス ホイール、名前は何でも!) でリンクをクリックした場合を除きます。次に、新しいタブが開き、応答が返されてそのタブにレンダリングされます。
これを防ぐ方法はありますか?
ページにリンクのグループがあります。ユーザーがリンクをクリックすると、非同期リクエストがトリガーされ、ページのコンテンツ領域がレスポンス html で更新されます。
これは問題なく動作しますが、ユーザーが「中ボタン」(またはマウス ホイール、名前は何でも!) でリンクをクリックした場合を除きます。次に、新しいタブが開き、応答が返されてそのタブにレンダリングされます。
これを防ぐ方法はありますか?
JavaScript でリンクをキャッチし、デフォルトのリンク動作をオーバーライドします。
このような:
$('a.ajax').click(function(e){
e.preventDefault();
// do ajax stuff, and add an onfinish function that does
// something like document.location.href = this.attr('href');
});
コンテンツ領域が更新されていることに気付いたので、document.location.href を実行する必要はありません。e.preventDefault(); でデフォルトの動作をキャッチするだけです。
// edit preventDefault は中マウス ボタンを止めません... タグを使用しないことを検討しましたか? リンクを含むスパンにアクセスできるはずなので、スパンに onclick イベントを追加して、css でリンクを非表示にできますか?
残念ながらいいえ、Javascript はセキュリティ上の理由からその種のコントロールにアクセスできません。