如何防止中间按钮在浏览器中打开新选项卡?

时间:2010-08-26 08:38:34

标签: html ajax browser mouseevent mousewheel

我在一个页面上有一组链接。当用户点击链接时,它会触发异步请求,并使用响应html更新页面上的内容区域。

这种方法很好,除非用户点击带有“中间按钮”(或鼠标滚轮,无论它叫什么!)的链接。然后打开一个新选项卡,返回响应并将其呈现给该选项卡。

我有什么方法可以防止这种情况发生吗?

2 个答案:

答案 0 :(得分:2)

使用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();

捕获默认行为

//编辑 preventDefault不会停止鼠标中键...您是否考虑过不使用标签?我知道它应该是可访问的,所以可能是一个包含链接的span,所以你可以在span上添加onclick事件并用css隐藏链接?

答案 1 :(得分:0)

不幸的是,不会出于安全原因Javascript无法访问这种控件,因为它会被广泛滥用。