FireFox下的弹出窗口块

时间:2012-03-20 09:36:47

标签: javascript firefox popup

当我使用JavaScript函数时

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

但是我需要确保即使代码第一次运行时弹出窗口也会激活。

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

  1. 这应该以这样的方式完成:如果它不允许,则显示相应的消息并等待(setTimeout?),直到授予访问权限(并在之后打开弹出窗口)。

  2. 在执行此window.open操作之前,请检查FireFox是否允许弹出窗口。如果没有,则显示相应的消息(并且不允许用户在不授予访问权限的情况下深入应用内部)但如果确实允许则不要打开弹出窗口(用户无需查看)他可以发射弹出窗口)。所有这一切都可以在用户登录时完成(所有主要弹出窗口都需要用户进入)。

  3. 这就是这个想法。但是JavaScript呢?我怎样才能做到这一点?它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

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

所以我的建议是:

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

其他想法:

  • 观察文档的点击事件,然后打开弹出窗口,然后打开它(并删除点击观察)
  • 当弹出窗口为空时,使用阻止UI的模态对话框,并通过对话框内的单击向用户提供打开弹出窗口的选项。我更喜欢这个,因为在这里你有机会确定用户是否想要允许弹出窗口。
  • 根本不使用弹出窗口,可能使用内联弹出窗口,例如一个jquery对话框,LightBoxes等。