我正在尝试检测子窗口何时关闭。用户打开弹出窗口然后关闭弹出窗口。我想知道弹出窗口何时关闭。看起来这个问题的常见解决方案是在Window上放置一个计时器,因为这个问题已经在stackoverflow和web上的其他地方得到了解答。
我的问题是有些东西正在改变我子窗口的close属性,而不是用户关闭窗口。可能导致这种情况的原因是什么?
这是我的代码(顺便说一句,我知道AND应该是一个双&符号,出于某种原因,SO不允许我在那里发帖):
var childWindow = window.open(destURL, "thePopUp", "");
var count = 1;
var pollTimer = window.setInterval(function () {
alert(childWindow.closed.toString() + count.toString());
if (childWindow && childWindow.closed && count > 5) {
window.clearInterval(pollTimer);
handler();
}
count++;
}, 200);
这不能正常工作所以我在那里发出警报,试图看看发生了什么。
警报显示以下消息:
false1
TRUE2
true3
true4
true5
因此介于1和2之间的闭合属性的值从false变为true。但我没有做任何事情,窗户仍在打开。那么为什么它会从虚假变为真呢?
答案 0 :(得分:2)
看来这是IE的Acrobat插件的问题。
打开标准网页时,您发布的代码按预期工作。但是,使用PDF的URL会在不同的浏览器中生成不同的结果。
在Chrome中,由于它使用了自己的PDF渲染系统,因此代码可以按预期工作。但是,在IE8中,PDF查看器插件似乎将页面报告为已关闭。
到目前为止,我一直无法找到解决方法。
尝试包括为childWindow.onunload
和childWindow.onbeforeunload
定义闭包。在Chrome中,这些会在窗口实际关闭之前触发闭包功能。
检查childWindow.closed
:
Fiddle,For viewing in IE