В моих тестах Chrome (и, наверное, как и любой другой браузер webkit) не в состоянии выполнить AJAX-запрос ДО выхода из страницы.
Представьте, например, что вам нужно что-то почистить на серверепотому что пользователь нажал на какую-то ссылку или покинул страницу.
Первое, что я заметил, это то, что window.onunload НЕ работает в Chrome (Webkit?)
Как только вы используете window.onbeforeunloadУБЕДИТЕСЬ, что не помещайте в тело вот так: Потому что оно игнорируется.ВЫ ДОЛЖНЫ сделать window.onbeforeunload = function () {...}, чтобы убедиться, что привязка выполнена (или использовать для этого библиотеки jquery или прототипа)
В вашем коде onbeforeunload - АСИНХРОННЫЙ Ajax, подобный этому, НЕ ВЫИГРАЛT работает либо:
var req = new XMLHttpRequest();
req.open("GET", "dosomething.page");
req.send(null);
(хотя это будет работать в Firefox)
Это будет работать, если ТОЛЬКО, если запрос сделан СИНХРОННО, как это:
var req = new XMLHttpRequest();
req.open("GET", "dosomething.page",false);
req.send(null);
Хотя имейте в виду, что синхронизация может привести к зависанию браузера на 2 минуты, если сервер НЕ отвечает.
Кроме того, Firefox, похоже, не работает с onunload.
Так что, в конце концов, вы должныпредоставить отдельный путь к коду для каждого браузера или семейства браузеров.
Я не смог правильно протестировать IE на этом.Кто-нибудь знает?IE больше похож на Chrome или FF в этом?или они тоже разные?