【发布时间】:2011-02-15 08:44:32
【问题描述】:
如果您的弹出窗口被弹出窗口阻止程序阻止,如何获得通知? (需要代码示例)
【问题讨论】:
-
不要使用弹出窗口。就这么简单。
标签: php javascript html popup window
如果您的弹出窗口被弹出窗口阻止程序阻止,如何获得通知? (需要代码示例)
【问题讨论】:
标签: php javascript html popup window
有
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。我也觉得设置一些超时很重要。
简短的回答是,除非你真的想惩罚你的用户,否则你不能这样做。
弹出窗口通常是在客户端使用 JavaScript 生成的,因此您无法知道弹出窗口是否被服务器阻止,除非您正在观察比较页面内容请求与来自同一 IP 的弹出内容请求。该方法会产生数量惊人的误报和误报,因为如果用户刷新页面,他们可能不会第二次得到弹出窗口,但他们可能第一次得到它。或者可能会生成一个弹出窗口,然后该窗口中的内容可以独立于页面其余部分的内容加载。因此,唯一合理的解决方案是完全不可靠的。
因此,您可以做的是编写一个 JavaScript 测试来测量是否会从触发的 JavaScript 生成弹出窗口。当触发 JavaScript 触发但弹出窗口不立即存在时,您将不得不触发 AJAX 以向您发送警报,以便动态通知您弹出窗口加载失败。但是,如果我看到这样的代码,我会将您的整个域从我的企业中列入黑名单,并提醒主要安全公司您是恶意网站或已被入侵。
【讨论】: