我打开一个带有
的弹出窗口var popup = window.open('...', '...');
此javascript在控件中定义。然后从网页使用该控件。我想重新加载弹出窗口关闭时打开此弹出窗口的页面。
基本上,用户需要在弹出窗口中输入一些面额并提交。然后将这些面额存储在用户会话中。当用户点击提交时,我关闭弹出窗口,同时想要刷新打开此弹出窗口的窗口,以重新获取用户在弹出窗口中所做的更新。
我正在尝试
var popup = window.open('...','...');
if (popup) {
popup.onClose = function () { popup.opener.location.reload(); }
}
我想我做错了因为这似乎不起作用。
为了测试这个问题,我甚至试过了,但没有出现警报。
if (popup) {
popup.onclose = function() {
alert("1.InsideHandler");
if (opener && !opener.closed) {
alert("2.Executed.");
opener.location.reload(true);
} else {
alert("3.NotExecuted.");
}
}
}
答案 0 :(得分:6)
这是我的建议。
你应该在弹出窗口中:
<script type="text/javascript">
function reloadOpener() {
if (top.opener && !top.opener.closed) {
try {
opener.location.reload(1);
}
catch(e) {
}
window.close();
}
}
window.onunload=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>
旧建议
弹出窗口中没有名为popup的变量。 尝试
var popup = window.open('...','...');
if (popup) {
popup.onclose = function () { opener.location.reload(); }
}
或测试:
popup.onclose = function () { if (opener && !opener.closed) opener.location.reload(); }
PS:所有浏览器都不支持onclose
PPS:location.reload采用布尔值,如果不想从缓存加载,则添加true
如opener.location.reload(1);
答案 1 :(得分:1)
试试这个:
window.opener.location.reload(true);
或
关闭前弹出窗口
window.opener.location.href = window.opener.location.href;
window.close();
答案 2 :(得分:0)
相反,你应该使用像这样的模态对话框
var popup = window.showModalDialog("page.html", "", params);
这将阻止你在这一行,直到对话框关闭。
在你的page.html的某个地方,你会编写一些javascript来设置window.returnValue
这就是弹出变量的位置。
答案 3 :(得分:0)
好的,你做的如下。
创建方法&#34; setWindowObjectInParent&#34;然后在弹出窗口中调用它。 var popupwindow;
function setWindowObjectInParent(obj)
{
popupwindow = obj;
}
现在你有了一个可以调用焦点的对象。
所以在弹出窗口中添加
$(window).unload(function(){
window.opener.setWindowObjectInParent();
});
window.opener.setWindowObjectInParent(window);
这将在弹出窗口关闭时取消设置obj,并在打开时设置对象。
因此,您可以检查是否定义了弹出窗口,然后调用焦点。