识别子窗口关闭,关闭属性更改

时间:2013-05-13 17:00:56

标签: jquery

我正在尝试检测子窗口何时关闭。用户打开弹出窗口然后关闭弹出窗口。我想知道弹出窗口何时关闭。看起来这个问题的常见解决方案是在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。但我没有做任何事情,窗户仍在打开。那么为什么它会从虚假变为真呢?

1 个答案:

答案 0 :(得分:2)

看来这是IE的Acrobat插件的问题。

打开标准网页时,您发布的代码按预期工作。但是,使用PDF的URL会在不同的浏览器中生成不同的结果。

在Chrome中,由于它使用了自己的PDF渲染系统,因此代码可以按预期工作。但是,在IE8中,PDF查看器插件似乎将页面报告为已关闭。

到目前为止,我一直无法找到解决方法。

尝试包括为childWindow.onunloadchildWindow.onbeforeunload定义闭包。在Chrome中,这些会在窗口实际关闭之前触发闭包功能。

检查childWindow.closedFiddleFor viewing in IE

关闭: FiddleFor viewing in IE