В IE9 Win 7 window.open () возвращает ноль вместо ссылки на открытое окно - PullRequest
16 голосов
/ 10 августа 2011

Я пытаюсь что-то вроде ниже,

var myWindow = null;
if(!myWindow || myWindow.closed)
{
    myWindow = window.open(url, windowId);
}
else 
{
    myWindow.focus();   
}

Все браузеры возвращают окно ref для window.open (), но IE 9 возвращает NULL. Кто-нибудь имеет больше информации о том, почему возвращается null или, возможно, обойти решение для IE9?

Ответы [ 4 ]

28 голосов
/ 11 августа 2011

window.open возвращает нулевой эталонный объект, если Включить защищенный режим отмечен в Свойства обозревателя-> Безопасность-> Уровень безопасности для этой зоны и ZONE отличается, т.е. в моемслучай, когда локальный файл открывает всплывающее окно из интрасети.

window.open возвращает ссылочный объект, даже если Включить защищенный режим проверяется, когда mysite.com открывает someothersite.com во всплывающем окне, например, Internet->Интернет

5 голосов
/ 11 августа 2011

Из любопытства, что твое windowId? В нем есть пробел?

Потому что, , по-видимому, IE9 не будет работать, если в заголовке окна есть пробел .

1 голос
/ 07 декабря 2016

На самом деле в моем случае я получаю ссылку на window.open, равную null, если открываю URL сайта localhost или intranet.Если мое всплывающее окно содержит какой-либо URL-адрес интернет-сайта, то я получаю ссылку на объект окна.Чтобы решить эту проблему, я сделал следующее:

  • Откройте IE> Сервис> Свойства обозревателя
  • Перейдите на вкладку "Безопасность"
  • Включите защищенный режим, установив флажок
  • Перезапустите IE

Теперь он начал давать мне ссылку на объект окна для всплывающего окна, открытого с сайтами интрасети.

Кроме того, это может быть проблема с URL-адресом, когда он защищен или добавленв зоне доверенных сайтов.Если вы можете предоставить URL, это поможет.

Надеюсь, это поможет.

0 голосов
/ 07 сентября 2018

У нас была эта проблема с нашим приложением.Мы используем внешнюю загрузку с использованием Dropbox, и она не работает.

Вот как мы это исправили.Обобщая различные чтения и решения.Пожалуйста, дайте мне знать, если какая-либо часть является неправильной или не имеет смысла.

Root Cause:

Начиная с IE11, Windows начала назначать уровни безопасности для приложений во время запуска,Окно с низким уровнем безопасности и окно с высоким уровнем безопасности.Кроме того, запуск IE11, когда открывается новое всплывающее окно, не является подокном главного окна браузера.Вместо этого это совершенно новый экземпляр IE11 с другим назначенным ему уровнем безопасности.Обычно внешний механизм загрузки работает с использованием функции обмена сообщениями между окнами в JavaScript.Если это не работает, внешние загрузки не работают.Согласно стандартам безопасности Windows, окно с низким уровнем безопасности не может отправить сообщение в окно с высоким уровнем безопасности.Делая шаг назад и глядя на наши машины Windows, они отправляются нашей внутренней командой.По умолчанию все наши доменные веб-приложения добавляются на доверенные сайты на наших компьютерах с Windows.Но внешние ссылки загрузки, такие как Dropbox, не добавляются на доверенные сайты.Поэтому, когда вы открываете наше приложение в IE11, окна автоматически помечают окно IE11 как окно с высоким уровнем безопасности.Теперь, когда вы пытаетесь загрузить файл дизайна через Dropbox, поскольку Dropbox не является доверенным сайтом, создается новое всплывающее окно - новый экземпляр IE11 с низким уровнем безопасности.Из-за этого после открытия окна Dropbox оно теряет связь с родительским окном, которым является Наше приложение.Это вызывает проблему с внешними загрузками

Fix:

  1. Либо добавьте yoursite.com и dropbox.com на доверенные сайты в IE11 через Свойства обозревателя> Безопасность> Надежные сайты или удалите их обоих.

  2. Включите защищенный режим в IE11, установив флажок Включить защищенный режим в IE11 через Свойства обозревателя> Безопасность> Включить защищенный режим, а затем перезапустите браузер.

Это означает, что это не является реальной проблемой для наших клиентов.Если это не работает для них, это либо по причине, либо один из сайтов добавлен в список доверенных сайтов, но не оба.

...