javascript:父窗口如何知道其子窗口已关闭?

时间:2011-03-09 01:35:39

标签: javascript javascript-events yui

我想在打开的子窗口关闭时执行一个函数。子窗口打开代码是:

outWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=600, height=400, top=100, left=100);

我想调用在父窗口中编写的javascript函数。我正在使用YUI-2来开发插件。 我怎样才能使它工作?应该注册什么事件?

提前感谢。

2 个答案:

答案 0 :(得分:32)

你可以这样做。

var intervalID, childWindow;

childWindow = window.open("http://www.google.com");

function checkWindow() {
    if (childWindow && childWindow.closed) {
        window.clearInterval(intervalID);
        alert('closed');
    }
}
var intervalID = window.setInterval(checkWindow, 500);

参考文献:window.setInterval和此answer

jsfiddle上的简单示例。

答案 1 :(得分:5)

您可以尝试通过以下方式访问父窗口:

window.opener.functionThatYouWant();

此代码位于de子窗口内。

但是,如果您打开一个窗口,该URL位于另一个域(而不是localhost)中,则由于安全问题而无法访问它。

我在Firefox上使用了这个代码,我不确定它是否适用于crossbrowser。