window.open()在IE6和IE7中不起作用

时间:2011-04-28 13:18:44

标签: javascript internet-explorer-7 internet-explorer-6

我有一个dotnet应用程序,我必须关闭当前窗口,然后在运行时再次打开新窗口。我已经使用了Javascript。代码如下:

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和IE7。突然间它出错了。它无法打开新窗口并突然停止在黑白中。

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

2 个答案:

答案 0 :(得分:0)

没有什么比关闭一个窗口并期望在它之后想要运行任何东西的了。

代码流程

  1. 名为
  2. 的功能
  3. 关闭窗口
  4. 打开窗口< - 如果父关闭,我该怎么办?
  5. 焦点窗口
  6. [咆哮] 你试图通过强迫用户使用你自己的弹出窗口来做这件事,因为它没有chrome是非常糟糕的用户体验。您正在删除用户历史记录。让我的浏览器一个人!有一个原因你必须做hacky东西关闭窗口,浏览器不允许你这样做。 [/咆哮]

答案 1 :(得分:0)

这是由于self.opener

的分配

12/04微软开始通过Windows Update推出Security Bulletin MS11-018,结束了与内存相关的多个漏洞 - 其中一个漏洞影响了opener属性,不再可以分配给它。