Обрабатывать событие закрытия окна IE в JavaScript - PullRequest
0 голосов
/ 20 апреля 2011


Мне нужно разобраться, когда окно Internet Explorer (6, 8 и 9) закрыто, чтобы запросить у него подтверждение. Я пробовал unbeforeunload, но, как вы, возможно, знаете, он срабатывает также при нажатии на любую ссылку, или форма отправлена. Некоторые могут сказать, что используют координаты мыши события, но есть несколько способов прервать такую ​​проверку (например, Alt + F4). Есть также способ установить некоторую переменную в true при нажатии на ссылки и проверить, есть ли событие, но это также не работает, так как я получил много различных ссылок на своих страницах, и в некоторых случаях событие вызывается несколько раз.
Также я попытался решить проблему с помощью фреймов, например: сделать 2 фрейма, поместить мои страницы в один фрейм, а в другой (с нулевым размером) поместить страницу с обработчиком onbeforeunload. Это бы прекрасно работало, но мы работаем с набором среды js, который мы не можем предотвратить загрузкой, и эти сценарии удаляют все фреймы на странице, помещая всю страницу в главное окно - ошибка…
Кто-нибудь может предложить что-нибудь еще?

1 Ответ

0 голосов
/ 20 апреля 2011

Если вы собираетесь использовать onbeforeunload (и это звучит правильно), у вас должен быть установлен флаг, чтобы событие беспокоило только вопрос о том, есть ли причина остаться на странице.

var hasChanges = false;

window.onbeforeunload = function() {

    if (hasChanges) {

        return "You have changes that will be lost if you continue leaving the page";

    };

};

Тогда вам просто нужно установить для переменной значение true (hasChanges = true), если есть причина остаться на странице ... поэтому, если ничего не изменилось, переход по другим ссылкам не вызовет диалоговое окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...