所以,目前我有一个脚本拦截在标签上任意点击鼠标,修改输出链接,并在他们的方式向用户发送:打开新选项卡自定义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事件结果的新窗口。
那么....任何线索,如果这实际上是可能的?我宁愿不让用户不得不允许弹出窗口,或重新映射他们的中间点击功能以在当前窗口中打开。
在此先感谢您的帮助!
Firefox将不会触发点击事件锚元素“不破网络”在中间击,因为“很多网站认为‘onclick’事件仅触发对于左键(因为这是IE和NS4做的)。“请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=156137 - 这是一个相当差的理由海事组织,因为其他较新的浏览器确实解雇了它,并没有解雇它从我们的开发人员中获得了很多潜力。另外,Opera上次点击时也没有触发中点击的点击事件。你确定mouseup不起作用吗?它仍然应该算作用户交互。 –
if(button && button == 0)){< - 此行有一个')'太多... –