IE9, showModalDialog () и window.close () - причуды с представлением совместимости - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть проект веб-сайта ASP.NET 3.5. В нем существует страница (A); на этой странице есть <iframe>, который загружает другую страницу (B). Начиная с B, через эту функцию запускается модальное диалоговое окно:

function ShowDialogLookup(anchorDiv) {
    // anchorDiv is div element with some data properties
    var result = window.showModalDialog($(anchorDiv).data('popup-url'), window, "dialogHeight: 300px; dialogWidth: 500px");
    return false;
}

Отказ от ответственности: Я хотел бы тысячу раз переписать это, чтобы использовать jQuery Dialog в модальном режиме, но я отвечаю только за то, чтобы заставить его работать в IE9. Итак, с этим сказал ...

В этом всплывающем окне отображаемая страница содержит кнопку «ОК» и кнопку «Отмена». Кнопка «Отмена» просто:

<button class="lookup-cancel">Cancel</button>

Назначено событие для закрытия модального диалога:

$('.lookup-cancel').button().click(function() {
    window.close();
});

В IE9, режим просмотра несовместимости , нажатие кнопки вызывает две вещи:

  1. Модальное диалоговое окно закрывается, но
  2. Второе полнокадровое окно запускается по тому же URL-адресу, что и модальное диалоговое окно.

Кнопка «Отмена» в полном окне теперь работает должным образом, когда она больше не содержится в модальном диалоговом окне, но независимо от того, что вызвало IE для запуска, это неожиданное поведение.

В IE9, с включенным режимом просмотра совместимости , нажатие кнопки делает именно то, что и должно.

  • Я сделал что-то в jQuery или IE, что ломается в IE9, что работало бы в IE 6, 7 или 8?

1 Ответ

2 голосов
/ 02 декабря 2011

Мне повезло с этим.IE9 очевидно заботится о type из <button>.В этом случае IE9 рассматривает его как кнопку отправки.Акт «отправки» вызывал загрузку отдельной страницы вне модального диалога.

Изменение кнопки на:

<button type="button" class="lookup-cancel">Cancel</button>

решило проблему.

...