【问题标题】:Popup windows being blocked if opened through mousedown event如果通过 mousedown 事件打开弹出窗口将被阻止
【发布时间】:2013-03-04 20:35:32
【问题描述】:

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

$("#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 一起使用时(虽然尚未在其他浏览器上测试过),弹出窗口被阻止。我注意到“点击”事件根本不起作用。

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

【问题讨论】:

  • 作为用户,真心希望不要。
  • 你为什么要创建一个右键单击的弹出窗口,对于一个可能有点奇怪的用户......如果使用自定义内容菜单而不是弹出窗口会更有意义!跨度>
  • 弹出窗口因某种原因被阻止。用户可以选择是允许还是拒绝弹出窗口,而您无法控制。
  • 我需要这样做,如果您单击左键或右键,链接会将您带到两个不同的地方,这没有恶意,它甚至在工具提示上说如果您单击使用右键将打开一个不同的窗口。左键单击绑定到“onclick”事件并且工作正常,右键单击只能绑定到 mouseup mousedown 和 contextmenu

标签: javascript jquery popup window.open right-click


【解决方案1】:

不,这是不可能的。

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

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

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

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多