1

所以,目前我有一个脚本可以拦截任何鼠标点击标签,修改传出链接,并将用户发送到他们的路上:

$("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 将拒绝从不是 CLICK 事件结果的 javascript 代码打开任何新窗口。

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

提前感谢您的帮助!

4

1 回答 1

1

但是,在某些浏览器中,鼠标右键和中键的默认操作无法禁用,或者只能通过更改浏览器设置来禁用。对浏览器设置的此类更改通常会影响通过浏览器查看的所有页面,并且通常无法通过 Javascript 完成。由于很少有用户愿意这样做,这几乎意味着这些鼠标事件不能从 Javascript 中使用。

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

于 2013-01-08T01:36:01.733 回答