Странное поведение при открытии всплывающего окна в Internet Explorer

У меня есть следующий код 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 отключен блокировщик всплывающих окон и не установлены другие блокировщики всплывающих окон.

Может ли кто-нибудь пролить свет на это?


person BlackWasp    schedule 04.11.2008    source источник


Ответы (3)


Ах, думаю, я понял ... пропустил в описании ...

Вы пытаетесь открыть немодальное окно из модального диалогового окна в IE.

Это AFAIK не должно работать.

Вместо этого попробуйте открыть другое модальное окно.

Фактически вы говорите ...

в окне A откройте модальное окно B, теперь откройте немодальное окно C, что на самом деле неверно.

person scunliffe    schedule 07.11.2008

Этот код прост. Используйте отладчик и посмотрите, что происходит.

Проверьте этот сайт с помощью FireFox или Chrome, у них есть отладчики JS.

Изменить:

Добавьте блок try / catch вокруг window.open() и посмотрите, есть ли там какое-то исключение.

Изменить 2:

Теперь я вижу, что вы отправляете символы как RequestId. Вы должны проверить, может ли этот URL обрабатывать такие значения. Поскольку имя RequestId, я бы сказал, что существует большая вероятность, что параметр должен быть только числовым. Если это верно, то может случиться так, что на стороне сервера произойдет сбой, когда вы попытаетесь открыть окно, и тогда ничего не произойдет. Причина для установки блока try / catch и тестирования.

person zendar    schedule 04.11.2008
comment
К сожалению, я не могу использовать эти браузеры, потому что они не работают с Dynamics CRM (если я чего-то не упускаю). - person BlackWasp; 04.11.2008
comment
Использовал отладчик Visual Studio 2008. Вызов window.open выполняется, но ничего не происходит :-( - person BlackWasp; 04.11.2008
comment
Javascript или HTML, вероятно, специфичны для IE. Возможно, вы могли бы попробовать запустить его в одном из браузеров и перейти на соответствующую страницу. - person zendar; 04.11.2008
comment
Другая идея - добавить в этот код try / catch. Вставьте его в функцию и попробуйте перехватить исключение. - person zendar; 04.11.2008

Возможно, вы захотите попробовать Firebug lite, который будет работать в IE.

http://getfirebug.com/lite.html

Попытка / поймать, о которой упоминали другие люди, также является хорошей идеей. Я думаю.

Кроме того, есть ли вероятность, что всплывающее окно пытается использовать окно, которое уже открыто, но свернуто. Значит, похоже, что это не работает, но на самом деле это просто перезагрузка свернутого окна?

person Jack    schedule 04.11.2008