在我的測試中,Chrome瀏覽器(以及其他任何可能的webkit瀏覽器)無法在離開頁面之前執行AJAX請求。在onunload/onbeforeunload上安全地執行AJAX的Webkit(Chrome或Safari)方式
想象一下,例如,您需要清理服務器上的某些內容,因爲用戶點擊了某個鏈接或離開了該頁面。
我注意到的第一件事是,window.onunload DOES NOT總之在Chrome一旦您使用window.onbeforeunload確保你不要放在身體像這樣的工作
(Webkit的?):因爲這被忽略。你必須做window.onbeforeunload = function(){...}以確保綁定完成(或使用jQuery或原型類型的庫)
在你的onbeforeunload代碼中,像這樣的ASYNCHRONOUS Ajax不起作用或者:
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? 還是它不同?