Странное поведение при открытии всплывающего окна в Internet Explorer
-
06-07-2019 - |
Вопрос
У меня есть следующий JavaScript-код для открытия окна в Internet Explorer.Код выполняется со страницы в модальном диалоговом окне Microsoft CRM.(RequestID - это строка, которая всегда одинакова в тестовой системе - на данный момент она содержит "abcdefg" - без кавычек).
var cancelUrl = "CancelRequest.aspx?RequestID=" + RequestID;
alert("About to open a window.\n\n" + cancelUrl);
window.open(cancelUrl);
alert("Window opened");
Я ожидаю увидеть сообщение о том, что я собираюсь открыть окно.Затем я ожидаю увидеть открытое окно и получить еще одно сообщение о том, что окно было открыто.На самом деле меня не волнует порядок последних двух событий;оповещения есть, так что я знаю, что код был выполнен.
У меня есть два компьютера и виртуальный компьютер.Все они работают под управлением IE7.В Windows 2003 VPC сообщения и всплывающие окна появляются каждый раз в обязательном порядке.
На ПК с Vista и WinXP сообщения появляются, но всплывающее окно появляется только с перерывами.(Я думаю, что это может иметь место и на ПК с Vista).
Все три имеют идентичные настройки в IE.У всех отключен блокировщик всплывающих окон IE и не установлены другие блокировщики всплывающих окон.
Кто-нибудь может пролить на это какой-нибудь свет?
Решение
Ах, я думаю, я понял ... пропустил это в описании ...
Вы пытаетесь открыть немодальное окно из модального диалогового окна в IE .
Этот AFAIK не должен работать.
Попробуйте вместо этого открыть другое модальное окно.
По сути, вы говорите ...
в окне A, откройте модальное окно B, теперь откройте немодальное окно C, которое на самом деле недопустимо.
Другие советы
Этот код прост.Используйте отладчик и посмотрите, что происходит.
Проверьте этот сайт в FireFox или Chrome, у них есть JS-отладчики.
Редактировать:
Добавьте блок try / catch вокруг window.open()
и посмотрите, есть ли там какое-то исключение.
Правка 2:
Теперь я вижу, что вы отправляете символы в качестве RequestID.Вам следует проверить, может ли этот URL обрабатывать такого рода значения.Поскольку имя - это RequestId
Я бы сказал, что есть большая вероятность, что там должен быть только числовой параметр.Если это правильно, то может случиться так, что серверная часть выйдет из строя при попытке открыть window, а затем ничего не произойдет.Еще одна причина установить блок try / catch и протестировать.
Возможно, вы захотите попробовать Firebug lite, который будет работать для IE.
http://getfirebug.com/lite.html
Попробуй / поймай, о чем упоминали другие люди, тоже хорошая идея. Я думаю.
Кроме того, есть ли вероятность того, что всплывающее окно пытается использовать окно, которое уже открыто, но свернуто. То есть он не работает, а просто перезагружает свернутое окно?