如果通过 mousedown 事件打开弹出窗口,则会被阻止

val*_*epu 4 javascript jquery popup right-click window.open

我想当有人用鼠标右键单击某个区域时打开一个弹出窗口。我现在正在使用这个:

$("#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();
});
Run Code Online (Sandbox Code Playgroud)

当与 Firefox 一起使用时(尽管尚未在其他浏览器上进行测试),弹出窗口被阻止。我注意到“点击”事件根本不起作用。

有什么方法可以在右键单击某个内容时打开弹出窗口而不被浏览器阻止吗?

Xae*_*kai 5

不,这是不可能的。

您可以在这里看到,在 Mozilla 中,鼠标中键和鼠标右键单击被阻止传播单击事件。你可以在这里看到,只有click得到“信任”,mouseupmousedown不会。

Chrome 以类似的方式运行,但允许鼠标中键传播click事件,并且它们是可信的(源自事件的弹出窗口不会被阻止)。然而,它们会打开失焦的窗口(您将停留在当前页面上)

我建议在普通点击处理程序上使用 Shift 键检测。