2010-04-27 1 views
2

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

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

ответ

1

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

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

+0

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

0

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

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

msdn reference

mozilla reference

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