2011-04-28 66 views
1

我有一个dotnet应用程序,其中我必须关闭当前窗口,然后在运行时再次打开新窗口。我已经使用Javascript。代码如下:window.open()不工作在IE6和IE7

function OpenNewWindow() { 
    if (ConfirmStartTest()) { 
     closeWindow(); 

window.open("OnlineTestFrame.aspx", "_Parent", "model=yes,dailog=no,top=0,height=screen.height,width=screen.width,status=no,toolbar=no,menubar=no,location=no,zoominherit =0,resizable =no,scrollbars=yes,dependent=no,directories=no,taskbar=no,fullscreen=yes"); 

     self.focus(); 

    } 

} 

//taking the confirmation for starting test 
function ConfirmStartTest() { 
    var result = confirm("Do you want to start the test now?"); 
    return result; 
} 

//function to close the current window 
function closeWindow() { 

    //var browserName = navigator.appName; 

    //var browserVer = parseInt(navigator.appVersion); 

    var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false; 

    if (ie7) 

      {  

      //This method is required to close a window without any prompt for IE7 
      window.open('','_parent',''); 
      window.close(); 

      } 

    else 

      { 

      //This method is required to close a window without any prompt for IE6 

      this.focus(); 

      self.opener = this; 

      self.close(); 

      } 
} 

现在,当我运行在IE7和IE6这个应用程序,它没有运行。但是,在IE8中它运行良好。

此代码对于以前的所有IE6 n IE7都正常工作。突然间,它发出错误信息。它无法打开新窗口并以黑白方式突然停止。

如果anyonw对此有任何想法,请告诉我。

+0

你说它突然停止工作 - 你之前做了什么改变? – 2011-04-28 13:34:27

+0

此外,我没有看到“自我”变量的初始化,你是否错过了,或者它是否在片段之外? – 2011-04-28 13:35:19

+0

@Niklas - https://developer.mozilla.org/en/window.self – epascarello 2011-04-28 13:36:35

回答

0

没有什么想关闭一个窗口,并期望任何后想要运行。

代码的流程

  1. 函数调用
  2. 关闭窗口
  3. 打开窗口< - 如何运行,如果父母被关闭?
  4. 焦点窗口

[言论] 你正在试图通过迫使用户使用自己的弹出窗口,所以它没有铬在这里做是非常不好的用户体验。您正在删除用户历史记录。让我的浏览器独处!有一个原因,为什么你必须做黑客东西关闭一个窗口,浏览器不允许你这样做。 [/咆哮]

+0

-1因为答案与问题无关。 – 2011-04-28 14:02:36

+0

@Sean在我的咆哮部分之前呢。看流量。关闭窗口,然后打开一个窗口。如果窗口关闭,它如何运行JavaScript?这就像在关闭它后试图走出一扇门。这是行不通的。 – epascarello 2011-04-28 14:06:11

+0

编辑它,让不明白我的一句话的人更清楚。 – epascarello 2011-04-28 14:10:06

0

这是由于self.opener分配。

12/04微软开始推出Security Bulletin MS11-018通过Windows更新关闭了与内存有关的几个漏洞 - 其中一个影响了opener属性不再被分配到。

+0

但是,只有当它不是IE7的时候,opener属性才会进入图片。我的问题是,它不适用于IE7。其次,它对所有IE7,IE6,IE8都能正常工作,但现在只能在IE8上工作。而且,我可以在d代码中进行任何chage。一样的。是否有任何可能需要在Internet Explorer中进行一些更改。 – Rashi 2011-04-28 14:10:18

+0

然后@ epascarello的答案看起来很有希望 - 但我的答案很可能是正确的IE6 – 2011-04-28 14:16:54