弹出窗口关闭时刷新父窗口

有什么办法可以在关闭弹出窗口时刷新父窗口而不向弹出窗口添加任何javascript代码?

我有一个页面parent.php,用户可以点击“打开弹出窗口”打开一个弹出窗口。 这个弹出窗口显示了一些flash内容,我无法添加类似的内容

window.onunload = function(){ window.opener.location.reload(); }; 

到弹出窗口页面标记。

有没有其他方法来实现这一目标? 谢谢

要使其在所有主流浏览器中都能正常工作,您需要在弹出窗口中处理unload事件处理程序并在主窗口中重新加载。 在主窗口中,添加

 function popUpClosed() { window.location.reload(); } 

在弹出窗口中:

 window.onunload = function() { if (window.opener && !window.opener.closed) { window.opener.popUpClosed(); } }; 

因此,如果您需要在所有浏览器中使用您的代码,尤其是IE,那么您的问题的答案通常是否定的。

我相信你可以把它添加到parent.php:

 var myPop = "pop up window selector" myPop.onunload = function(){ location.reload(); }; 

Tim Down方法的问题在于它没有回答原始问题。 要求是您无法在弹出窗口中添加任何代码。

我发现的一个解决方案虽然不是特别优雅,但在我测试过的所有浏览器中都是有效的。

您将只是连续轮询新创建的窗口对象,检查它是否仍然打开。

在父窗口上:

  var register; var poll; function isOpen(){ if(register.closed){alert("Closed!"); clearInterval(poll);} } function create(){ register = window.open("http://www.google.com","register","width=425,height=550"); poll=setInterval("isOpen()",100); //Poll every 100 ms. } 

有类似的问题来检测父窗口中的关闭弹出窗口。 我认为原因是没有设置document.domain属性。

添加到Tim Down的任何方式都会回答窗口和弹出窗口的document.domain属性,如下所示:

   

而不是

  window.onunload = function() { if (window.opener && !window.opener.closed) { window.opener.popUpClosed(); } }; 

我用在弹出窗口中: