2013-01-08 25 views
1

所以,目前我有一个脚本拦截在标签上任意点击鼠标,修改输出链接,并在他们的方式向用户发送:打开新选项卡自定义URL从中间点击在Firefox

$("a[href*='" + someDomain + "']").bind('click keypress', function(event) { 
    event.preventDefault(); 
    var link = this.href; 
    var newLink = link + params; 
    var button = event.button; 
    if(button && button == 0)) { 
     window.location = newLink; 
    } else if(button && button === 1) { 
     window.open(newLink, '_blank'); 
    } 
}); 

此代码将确定是左键单击还是中键单击,并重定向当前页面,或者相应地在新窗口/选项卡中打开。

就我所见,代码在Chrome/IE中运行良好。但是,在最新版本的Firefox中,只有左键点击正在工作。

对于中间点击,该事件未注册。所以,我的第一个想法是研究其他事件必须被触发。我能找到的唯一一个是mousedown/mouseup(点击是这些的组合)。

使用mousedown或mouseup,然后在Firefox中正确注册一个中间点击事件。然而,问题就变成Firefox将拒绝从JavaScript代码中打开任何不是CLICK事件结果的新窗口。

那么....任何线索,如果这实际上是可能的?我宁愿不让用户不得不允许弹出窗口,或重新映射他们的中间点击功能以在当前窗口中打开。

在此先感谢您的帮助!

+1

Firefox将不会触发点击事件锚元素“不破网络”在中间击,因为“很多网站认为‘onclick’事件仅触发对于左键(因为这是IE和NS4做的)。“请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=156137 - 这是一个相当差的理由海事组织,因为其他较新的浏览器确实解雇了它,并没有解雇它从我们的开发人员中获得了很多潜力。另外,Opera上次点击时也没有触发中点击的点击事件。你确定mouseup不起作用吗?它仍然应该算作用户交互。 –

+0

if(button && button == 0)){< - 此行有一个')'太多... –

回答

1

但是,在某些浏览器中,鼠标右键和鼠标中键的默认操作不能禁用,或只能通过更改浏览器设置禁用。浏览器设置的这种改变通常影响通过浏览器查看的所有页面,并且通常不能从Javascript完成。由于很少用户想要这样做,这意味着这些鼠标事件在Javascript中不可用。

http://www.unixpapa.com/js/mouse.html

相关问题