Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 window.closed IE9在窗口仍然打开时报告true_Javascript_Internet Explorer 9_Window.open_Window.closed - Fatal编程技术网

Javascript window.closed IE9在窗口仍然打开时报告true

Javascript window.closed IE9在窗口仍然打开时报告true,javascript,internet-explorer-9,window.open,window.closed,Javascript,Internet Explorer 9,Window.open,Window.closed,更新2012-01-10 弹出的URL在另一个域中作为父窗口,这似乎是问题所在!我怎样才能解决它 我使用下面的代码来检测弹出窗口是否关闭。它在Firefox 8和Chrome中运行良好,但在IE9中无法正常工作。在IE9中,当弹出窗口仍然打开时,带有“true”的警报已经显示。当窗口仍然打开时,IE9为什么会引用该窗口和属性报告closedtrue?我怎样才能修好它 Javascript var dialogWindow; var dialogTimer; function openDialog

更新2012-01-10
弹出的URL在另一个域中作为父窗口,这似乎是问题所在!我怎样才能解决它

我使用下面的代码来检测弹出窗口是否关闭。它在Firefox 8和Chrome中运行良好,但在IE9中无法正常工作。在IE9中,当弹出窗口仍然打开时,带有“true”的警报已经显示。当窗口仍然打开时,IE9为什么会引用该窗口和属性报告
closed
true
?我怎样才能修好它

Javascript

var dialogWindow;
var dialogTimer;
function openDialog(url, name, options) {
 dialogWindow = window.open(url, name, options);   
 dialogTimer = setInterval(function() {   
  if(dialogWindow.closed) // IE9 reports true and executes function
  {  
   alert(dialogWindow.closed); // alert with "true"
   clearInterval(dialogTimer);  
   window.location.reload();  
  }  
 }, 2500);

 if (dialogWindow && dialogWindow.focus) 
  dialogWindow.focus();     
}
更新 我还尝试了以下方法,它显示了IE9中完全相同的行为

var dialogWindow;
var dialogTimer;
function openDialog(url, name, options)
{
    dialogWindow = window.open(url, name, options);   
    dialogTimer = setInterval("checkDialogOpen()", 2500);

    if (dialogWindow && dialogWindow.focus) 
        dialogWindow.focus();     
}

function checkDialogOpen()
{
    if(dialogWindow.closed) 
    {  
        alert(dialogWindow.closed);
        clearInterval(dialogTimer);  
        window.location.reload();  
    } 
}

您的脚本有问题 更改:

编辑:我的打字是假的:修正了 测试页面:

特别注意:在我的测试页面示例中,由于窗口重新加载,弹出窗口将继续出现

注意:如果这不起作用,请尝试将变量设置为null,如下例所示:
据我所知,这是IE9中的一个bug


谢谢你的建议,我认为
var
应该在第一个
{
,但即使这样也没有区别。它在Firefox和Chrome中仍然起作用,但在IE9中仍然会产生相同的错误行为。介意在这里详细说明一下您的想法吗?也许在范围方面有一些方面我没有掌握。感谢您的更新,我在家里尝试了这一概念验证,似乎很有用结果是正确的行为,但我需要在工作中的项目中使用它。因此,下周我将在工作中尝试它,如果它解决了问题,我将接受您的回答。感谢如果弹出url与父窗口位于同一个域中,则此操作似乎有效。如果弹出url位于另一个域中,则问题仍然存在。良好尝试+1,但忽略2000注意,这是IE9中的一个bug,所以你们都不能提供正确的解决方案。谢谢你们的反馈。只是要注意,它对我在Windows 7上的IE9有效,因为我刚刚测试过:)所以也许他们在某个地方修复了它?IDK,我没有研究它。很好的发现。这不是一个真正的解决方案,但至少现在我知道我不是crazy.:)
dialogTimer = setInterval(function()
      {
        if(dialogWindow.closed) // IE9 reports true and executes function 
     {
dialogTimer = setInterval(function()
    {
        var dialogClosedStatus = dialogWindow.closed;
        if(dialogClosedStatus) // IE9 reports true and executes function
      {