Как я могу получить причину выгрузки страницы в событии onunload javascript в IE?

Причины выгрузки страницы могут быть разные:
1 Пользователь закрывает текущее окно.
2 Пользователь переходит в другое место.
3 Нажимает кнопку «Назад», «Вперед», «Обновить» или «Домой».
4 Пользователь отправляет форму, а затем браузер начинает выгружать текущую страницу и загружать страницу с результатами отправки формы. (Предполагая, что текущее окно является целью формы).
5 и так далее...

Можно ли как-то узнать в обработчике onunload, что причина выгрузки п.4, т.е. переход на страницу с результатами отправки формы?
Я мог бы установить какой-нибудь флаг при отправке формы, но это не решает проблему. Поскольку ответ (при отправке формы) от веб-сервера занимает некоторое время, браузер не сразу выгружает текущую страницу и ждет ответа от сервера. И во время этого ожидания пользователь может закрыть окно или перейти куда угодно. И мне нужно знать, действительно ли он перемещался на страницу результатов или что-то еще...?


person DM.    schedule 27.04.2010    source источник


Ответы (2)


Вы можете захватить некоторые из этих событий.

Например, для ссылок вы можете добавить обработчик событий для ссылок, который сохраняет их атрибут href, выполняет то, что вам нужно, а затем устанавливает window.location на href, который вы сохранили в переменной.

person alex    schedule 27.04.2010
comment
Спасибо, но мне нужно уловить все случаи... или один случай - переход на страницу результатов отправки. В настоящее время я использую фреймы (т.е. событие onunload находится в главном окне, а форма находится в фрейме внутри главного окна), но этот подход также имеет недостатки. - person DM.; 27.04.2010

Точная причина выгрузки страницы не может быть известна обработчику выгрузки. Событие OnUnload не является стандартным и было впервые реализовано в IE.

Разные браузеры могут обрабатывать это по-разному и запускать событие в разных случаях.

справочник msdn

справочник Mozilla

Поэтому, если вы пытаетесь узнать причину выгрузки в обработчике выгрузки, я думаю, вам может не повезти. Однако, как указал Алекс в своем ответе, вы, вероятно, могли бы узнать о том, что пользователь уходит с вашей страницы, щелкнув какую-либо ссылку на вашей странице, сделав обработчики кликов для этих ссылок более интеллектуальными.

person Rajat    schedule 27.04.2010