Как я могу получить причину выгрузки страницы в событии onunload javascript, в IE? - PullRequest
2 голосов
/ 27 апреля 2010

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

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

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

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

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

0 голосов
/ 27 апреля 2010

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

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

MSDN ссылка

ссылка на Mozilla

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

...