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();
});

将它与 firefox 一起使用时(虽然尚未在其他浏览器上测试过),弹出窗口被阻止。我注意到“点击”事件根本不起作用。

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

4

1 回答 1

5

不,这是不可能的。

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

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

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

于 2015-02-11T13:35:18.620 回答