打开popup窗口并在closurespopup窗口刷新父页面

我用JavaScript打开了一个popup窗口,当我closures这个popup窗口时,我想刷新父页面(onclose event?)我该怎么做?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no"); 

你可以使用' window.opener '访问父窗口,所以在子窗口中写下如下内容:

 <script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } </script> 

popup窗口没有任何可以收听的closures事件。

另一方面,当窗口closures时,有一个closures的属性被设置为true。

你可以设置一个计时器来检查这个closures的属性,并像这样做:

 var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no"); var timer = setInterval(function() { if(win.closed) { clearInterval(timer); alert('closed'); } }, 1000); 

看到这个工作小提琴的例子 !

在你的孩子页面上,把这些:

 <script type="text/javascript"> function refreshAndClose() { window.opener.location.reload(true); window.close(); } </script> 

 <body onbeforeunload="refreshAndClose();"> 

但作为一个好的UIdevise,你应该使用一个closuresbutton因为它更友好。 看下面的代码。

 <script type="text/javascript"> $(document).ready(function () { $('#btn').click(function () { window.opener.location.reload(true); window.close(); }); }); </script> <input type='button' id='btn' value='Close' /> 

如果打开的URL符合同源策略 ,window.open将返回对新创build窗口的引用。

这应该工作:

 function windowClose() { window.location.reload(); } var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no"); foo.onbeforeunload= windowClose;​ 

我使用这个:

 <script language='javascript'> var t; function doLoad() { t = setTimeout("window.close()",1000); } </script> <script type="text/javascript"> function refreshAndClose() { window.opener.location.reload(true); window.close(); } </script> <body onbeforeunload="refreshAndClose();" onLoad='doLoad()''> 

当窗口closures,然后刷新父窗口。

如果您的应用在支持HTML5的浏览器上运行。 你可以使用postMessage 。 这里给出的例子与你的很相似。

在我的情况下,我打开了一个popup窗口,点击父页面上的linkbutton。 刷新使用closures子项的父项

 window.opener.location.reload(); 

在子窗口导致重新打开子窗口(也许是因为视图状态我猜。纠正我如果我错了)。 所以我决定不重新加载父页,并再次加载页面分配相同的url。

为了避免在closurespopup窗口后popup窗口,这可能会有所帮助,

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

尝试这个

  self.opener.location.reload(); 

打开当前窗口的父项并重新加载位置。

你可以通过父命令(父窗口)到达主页面,在这个步骤之后,你可以做所有的事情…

  function funcx() { var result = confirm('bla bla bla.!'); if(result) //parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + ""); parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + ""); } 

您可以在父页面中使用下面的代码。

 <script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } </script> 

以下代码将pipe理刷新父窗口后closures:

 function ManageQB_PopUp() { $(document).ready(function () { window.close(); }); window.onunload = function () { var win = window.opener; if (!win.closed) { window.opener.location.reload(); } }; }