【问题标题】:How to get informed if your PopUp window was blocked?(HTML JS PHP)如果您的弹出窗口被阻止,如何获得通知?(HTML JS PHP)
【发布时间】:2011-02-15 08:44:32
【问题描述】:

如果您的弹出窗口被弹出窗口阻止程序阻止,如何获得通知? (需要代码示例)

【问题讨论】:

  • 不要使用弹出窗口。就这么简单。

标签: php javascript html popup window


【解决方案1】:

window.open (URL, windowName[, windowFeatures]);

您打开一个新的弹出窗口,并作为URL 放置一些 html 页面。在弹出的页面中,您可以编写一些JS,您可以在其中使用window.opener 变量,这样您就可以从您的主页访问所有JS。 然后你可以在弹出的页面中设置一些标志 - 例如:

index.html

<html>
  <body>
    <script type="text/javascript">
      var opened = false;
      window.open('popup.html');
      // and here some loop in mooTools/jQuery/or
      // something to look up for variable changes
    </script>
  </body>
</html>

popup.html

<html>
  <body>
    <script type="text/javascript">
      window.opener.opened = true;
    </script>
  </body>
</html>

我会那样做的。

编辑

这是使用PHP的另一种方式:

在您的popup.php 中,您可以在会话中设置一些标志

$_SESSION['opened'] = true;

index.php 中,您应该向AJAX 写一些内容,请求执行一个操作,该操作将返回一个来自$_SESSION 的值。

【讨论】:

  • 有了这个循环,这是一个免费的想法——你可以命名你的弹出窗口并为其添加事件domready。我也觉得设置一些超时很重要。
  • 这取决于你使用的 js lib。
  • 谁能帮我回答这个问题stackoverflow.com/questions/4232546/…
【解决方案2】:

简短的回答是,除非你真的想惩罚你的用户,否则你不能这样做。

弹出窗口通常是在客户端使用 JavaScript 生成的,因此您无法知道弹出窗口是否被服务器阻止,除非您正在观察比较页面内容请求与来自同一 IP 的弹出内容请求。该方法会产生数量惊人的误报和误报,因为如果用户刷新页面,他们可能不会第二次得到弹出窗口,但他们可能第一次得到它。或者可能会生成一个弹出窗口,然后该窗口中的内容可以独立于页面其余部分的内容加载。因此,唯一合理的解决方案是完全不可靠的。

因此,您可以做的是编写一个 JavaScript 测试来测量是否会从触发的 JavaScript 生成弹出窗口。当触发 JavaScript 触发但弹出窗口不立即存在时,您将不得不触发 AJAX 以向您发送警报,以便动态通知您弹出窗口加载失败。但是,如果我看到这样的代码,我会将您的整个域从我的企业中列入黑名单,并提醒主要安全公司您是恶意网站或已被入侵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    相关资源
    最近更新 更多