0

我正在尝试检测子窗口何时关闭。用户打开一个弹出窗口,然后关闭该弹出窗口。我想知道弹出窗口何时关闭。这个问题的常见解决方案似乎是在 Window 上放置一个计时器,因为这个问题已经在 stackoverflow 和网络上的其他地方的多个地方得到了回答。

我的问题是某些东西正在改变我的子窗口上的关闭属性,而不是用户关闭窗口。这可能是什么原因造成的?

这是我的代码(顺便说一句,我知道 AND 应该是一个双&符号,由于某种原因,所以不让我在那里发布):

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。但我什么也没做,窗户还开着。那么为什么它会从假变为真呢?

4

1 回答 1

2

这似乎是适用于 IE 的 Acrobat 插件的问题。

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

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

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

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

检查childWindow.closed小提琴用于在 IE 中查看

关闭: 小提琴用于在 IE 中查看

于 2013-05-13T19:21:14.680 回答