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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
2 979
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

Редактировать:

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

Изменить 2:

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

К сожалению, я не могу использовать эти браузеры, потому что они не работают с Dynamics CRM (если я чего-то не упускаю).

BlackWasp 04.11.2008 17:20

Использовал отладчик Visual Studio 2008. Вызов window.open выполняется, но ничего не происходит :-(

BlackWasp 04.11.2008 17:24

Javascript или HTML, вероятно, специфичны для IE. Возможно, вы могли бы попробовать запустить его в одном из браузеров и перейти на соответствующую страницу.

zendar 04.11.2008 19:02

Другая идея - добавить try / catch вокруг этого кода. Вставьте его в функцию и попробуйте поймать исключение.

zendar 04.11.2008 19:03

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

http://getfirebug.com/lite.html

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

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

Ответ принят как подходящий

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

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

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

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

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

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

Другие вопросы по теме