通过mousedown事件打开的弹出窗口被阻止了。

4
我希望在某人使用右键单击区域时打开弹出窗口。 目前我正在使用以下内容:
$("#popup").bind('mousedown', function(e) {
    var w;
    if(e.which==3) {
        w=window.open('link','_blank','options');
    } else {
        return false;
    }
    if(w!=null){
        w.focus();
    }
    event.preventDefault();
});

使用火狐浏览器时(虽然没有测试其他浏览器),弹出窗口被阻止了。我注意到,使用“点击”事件根本不起作用。

有没有办法在右键单击某个内容时打开一个弹出窗口而不被浏览器阻止?


3
作为用户,我真心希望不要这样。 - prodigitalson
为什么要通过鼠标右键创建一个弹出窗口呢?这对于用户来说可能有点奇怪。使用自定义内容菜单而不是弹出窗口会更加合理。 - David Chase
1
弹出窗口被阻止是有原因的。用户可以选择允许或拒绝弹出窗口,你无法控制这个过程。 - James Coyle
我需要让链接在左键或右键点击时带您到两个不同的位置,没有任何恶意行为,甚至在工具提示上说明如果您使用右键单击它将打开一个不同的窗口。左键单击绑定到“onclick”事件并且可以正常工作,右键单击只能绑定到mouseup、mousedown和contextmenu。 - valepu
1个回答

5
不,这是不可能的。
您可以在此处看到,在Mozilla中,中间和右键点击被阻止传播点击事件。而且您可以在此处看到,只有click被“信任”,而mouseupmousedown则没有。
Chrome的行为方式类似,但允许中间鼠标按钮传播click事件,并且它们是受信任的(源自事件的弹出窗口不会被阻止)。但是它们会在焦点外打开窗口(您将停留在当前页面)。
我建议在普通点击处理程序上使用Shift键检测。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接