window.open () не работает в IE6 и IE7 - PullRequest
1 голос
/ 28 апреля 2011

У меня есть приложение 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 голосов
/ 28 апреля 2011

Это связано с присвоением self.opener.

12/04 Microsoft начала выталкивать Бюллетень по безопасности MS11-018 через Центр обновления Windows, который закрыл несколько уязвимостей, связанных с памятью - одна из них затронула свойство opener, которое больше нельзя назначать.

0 голосов
/ 28 апреля 2011

Ничего подобного закрытию окна и ожиданию чего-либо после его запуска.

Поток кода

  1. Функция называется
  2. Закрыть окно
  3. Открыть окно <- Как я могу запустить, если родительский закрыт? </li>
  4. Окно фокуса

[декламация] То, что вы пытаетесь сделать здесь, заставляя пользователя использовать свое собственное всплывающее окно, чтобы оно не имело хрома, - очень плохой пользовательский опыт. Вы удаляете историю пользователей. Оставь мой браузер в покое! Есть причина, по которой вы должны делать хакерские вещи, чтобы закрыть окно, браузеры не позволяют вам это делать. [/ Напыщенная]

...