уведомить сервер (XMLHttpRequest?) о событии onunload? - PullRequest
0 голосов
/ 14 августа 2010

Можно ли уведомить сервер (сделать один HTTP-запрос с небольшим количеством данных, ответ не важен), когда клиент покидает страницу?

Я на самом деле использую кометное приложение python-tornado с javascript, постоянно поддерживающим соединение запроса с сервером (которое закрывается и вновь открывается при событии. Исходя из этого: https://launchpad.net/eftw).

Я не нашел простой способ отладки этого (в частности, с FireBug). Это делает его довольно проблематичным.

Да, и фактический код (так как он в любом случае уже пригоден для использования): http://bazaar.launchpad.net/~hoverhell/xftw/trunk/files

1 Ответ

4 голосов
/ 14 августа 2010

Вы не можете сделать это надежным способом, в зависимости от браузера и задержки, ваш XmlHttpRequest, скорее всего, будет уничтожен до его фактического завершения.

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

Вы можете отправить запрос в событии window.onbeforeunload ... но попадет ли он на сервер? Может быть.

...