2011-03-09 192 views
8

我想在打开的子窗口关闭时执行一个函数。子窗口开放代码:javascript:父窗口如何知道其子窗口关闭?

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); 

我想打电话给写在父window.I JavaScript函数在用YUI-2开发的插件。 我如何使它工作?应该注册什么事件?

在此先感谢。

window.opener.functionThatYouWant(); 

此代码是德子窗口中:

+0

另请参阅 - http://stackoverflow.com/questions/5712195/js-listen-when-child-window-is-closed – 2015-03-26 07:24:16

回答

3

您可以尝试存取权限的父窗口。

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

我在火狐上使用了这段代码,我不确定它是否可以使用交叉浏览器。

+1

它在Safari中正常工作,但它似乎没有在Chrome中工作。 – grc 2011-03-09 01:47:49

+2

是的,似乎有这个问题。但马克的答案似乎更好,它是交叉浏览器,尝试它。 – JeanK 2011-03-09 01:54:46

31

你可以做这样的事情。

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.setIntervalanswer

简单示例jsfiddle

+4

我不明白为什么OPiazao的答案在这里被标记为正确的答案。这是根据OP中描述的要求处理它的正确方法。 – Carnix 2014-10-14 21:37:40