我正在打开一个弹出窗口
var popup = window.open('...','...');
这个javascript在控件中定义.然后从网页使用该控件.我想重新加载弹出窗口关闭时打开此弹出窗口的页面.
基本上用户需要在弹出窗口中输入一些面值并提交.然后将这些面额存储在用户会话中.当用户点击提交时,我关闭弹出窗口,同时要刷新打开此弹出窗口的窗口,以重新获取用户在弹出窗口中所做的更新.
我正在努力
var popup = window.open('...','...'); if (popup) { popup.onClose = function () { popup.opener.location.reload(); } }
我想我这样做错了coz这似乎没有工作.
为了测试这个问题,我甚至尝试过这个,但没有出现警报.
if (popup) { popup.onclose = function() { alert("1.InsideHandler"); if (opener && !opener.closed) { alert("2.Executed."); opener.location.reload(true); } else { alert("3.NotExecuted."); } } }
解决方法
这是我的建议.
在弹出窗口有
<script type="text/javascript"> function reloadOpener() { if (top.opener && !top.opener.closed) { try { opener.location.reload(1); } catch(e) { } window.close(); } } window.ununload=function() { reloadOpener(); } </script>
<form action="..." target="hiddenFrame"> </form> <iframe style="width:10px; height:10px; display:none" name="hiddenFrame" src="about:blank"></iframe>
那么在服务器进程返回
<script> top.close(); </script>
老建议
在弹出窗口中没有名为弹出窗口的变量.
尝试
var popup = window.open('...','...'); if (popup) { popup.onclose = function () { opener.location.reload(); } }
或通过测试:
popup.onclose = function () { if (opener && !opener.closed) opener.location.reload(); }
PPS:location.reload采用布尔值,如果要从缓存加载,则添加true如在opener.location.reload(1);