Javascript FireFox下的弹出块

Javascript FireFox下的弹出块,javascript,firefox,popup,Javascript,Firefox,Popup,当我使用JavaScript函数时 var w = window.open('about:blank'); 在FireFox下,弹出窗口被阻止,我可以选择取消阻止它。即使我这样做了,弹出窗口也不会出现(我相信JavaScript需要再次启动) 但我需要确保即使代码第一次运行,弹出窗口也会启动 所以我想检查FireFox是否允许弹出窗口。有两种可能性: 如果不允许,则应显示相应的消息并等待(setTimeout?),直到授予访问权限(然后打开弹出窗口) 执行此操作之前,请打开窗口。打开操作检查F

当我使用JavaScript函数时

var w = window.open('about:blank');
在FireFox下,弹出窗口被阻止,我可以选择取消阻止它。即使我这样做了,弹出窗口也不会出现(我相信JavaScript需要再次启动)

但我需要确保即使代码第一次运行,弹出窗口也会启动

所以我想检查FireFox是否允许弹出窗口。有两种可能性:

  • 如果不允许,则应显示相应的消息并等待(
    setTimeout
    ?),直到授予访问权限(然后打开弹出窗口)

  • 执行此操作之前,请打开
    窗口。打开操作检查FireFox是否允许弹出窗口。如果不允许,则显示相应的消息(不允许用户在未授予访问权限的情况下深入应用程序),但如果允许,则不打开弹出窗口(用户不需要看到他可以启动弹出窗口)。所有这些都可以在用户登录时完成(所有主弹出窗口都要求用户登录)


  • 这就是我的想法。但是JavaScript呢?我怎样才能做到这一点?甚至可能吗?

    当firefox阻止弹出窗口时,对w的引用将为空

    因此,我的建议是:

    • 尝试打开弹出窗口
    • 检查w是否为空
    • 当w为空时,显示消息
    • 在消息中添加一个元素,并添加类似“单击此处打开窗口”的通知
    • 观察该元素的点击事件,当它触发时,打开弹出窗口(firefox通常不会阻止点击事件强制弹出的窗口)并隐藏消息
    • 否则:在xxx秒后隐藏消息
    其他想法:

    • 观察文档的点击事件,然后在其打开时打开弹出窗口(并删除点击观察)
    • 当弹出窗口为空时,使用一个模式对话框来阻止用户界面,并允许用户通过在对话框内单击来打开弹出窗口。我更喜欢这样,因为在这里你有机会决定用户是否允许弹出窗口
    • 完全不要使用弹出窗口,如果可能,请使用内联弹出窗口,例如jquery对话框、lightbox等

    谢谢你的好主意。我想我会切换到内联弹出窗口(因为我可以)。它们更容易控制。