Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查弹出窗口是否关闭_Javascript_Asp.net_Internet Explorer 9 - Fatal编程技术网

Javascript 检查弹出窗口是否关闭

Javascript 检查弹出窗口是否关闭,javascript,asp.net,internet-explorer-9,Javascript,Asp.net,Internet Explorer 9,我正在打开一个弹出窗口 var popup = window.open('...', '...'); 此javascript在控件中定义。然后从网页使用此控件。我想重新加载当弹出窗口关闭时打开该弹出窗口的页面 基本上,用户需要在弹出窗口中输入一些面值并提交。这些面额随后存储在用户会话中。当用户单击提交时,我将关闭弹出窗口,同时希望刷新打开此弹出窗口的窗口,以重新蚀刻用户在弹出窗口中进行的更新 我正在努力 var popup = window.open('...','...'); if (pop

我正在打开一个弹出窗口

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.");
    }
  }
}
以下是我的建议

在弹出窗口中,您应该有:


函数重载开启器(){
如果(top.opener&!top.opener.closed){
试一试{
开启器。位置。重新加载(1);
}
捕获(e){
}
window.close();
}
}
window.onunload=function(){
重新加载开启器();
}

然后在服务器进程中,您可以返回


top.close();

旧建议

弹出窗口中没有名为popup的变量。 试一试

或通过测试:

popup.onclose = function () { if (opener && !opener.closed) opener.location.reload(); }
PS:不是所有浏览器都支持

PPS:location.reload采用布尔值,如果不想从缓存加载,请添加true
opener.location.reload(1)中所示

相反,您应该使用这样的模式对话框

var popup = window.showModalDialog("page.html", "", params);
在对话框关闭之前,此操作将在此行停止

然后,在page.html中的某个地方,您可以编写一些javascript代码来设置
窗口.returnValue
,它将放置弹出变量

更新

Window.showModalDialog()是。

请尝试以下操作:

window.opener.location.reload(true);

在关闭前进入弹出窗口

window.opener.location.href = window.opener.location.href;
window.close();

好的,你要做的如下

创建一个方法“setWindowObjectInParent”,然后在弹出窗口中调用它。 var popupwindow

function setWindowObjectInParent(obj)
{
popupwindow = obj;
}
现在您有了一个可以调用焦点的对象

所以在弹出窗口中添加

$(window).unload(function(){
window.opener.setWindowObjectInParent();
});
window.opener.setWindowObjectInParent(window);
这将在弹出窗口关闭时取消对象设置,并在打开时设置对象


因此,您可以检查弹出窗口是否已定义,然后调用focus。

您是否尝试过使用模式弹出窗口?您不希望在模式窗口中提交表单,除非您将表单提交到iframe,除非在模式窗口中提交表单很难,除非它有iframe要提交,以及如何阻止他们将表单放入iframe?要求是使用无模式弹出窗口打开时立即重新加载该窗口。顺便说一句,它是onclose,小写C。不是所有浏览器都支持它。为了进行测试,我使用了这个>>>popup.onclose=function(){if(opener&&!opener.closed){alert(“Executed…”;opener.location.reload();}但是警报从未显示。请将onClose更改为onClose,并确保您使用的浏览器支持此功能。对不起,我真的不知道为什么我否决了此功能。也许我只是太累了,打错了。除非修改答案,否则我无法撤消投票。很抱歉。
$(window).unload(function(){
window.opener.setWindowObjectInParent();
});
window.opener.setWindowObjectInParent(window);