2012-12-09 43 views
4

我用window.onbeforeunload在我的javascript代碼封閉,但顯然它僅適用於火狐瀏覽器:退出窗口時使用javascript

<script type="text/javascript"> 
    window.onbeforeunload = function (e) { 
     location.href="admin.jsp?action=logout"; 
    }; 
    </script> 

我需要這個關閉至少5個著名的瀏覽器(Firefox,IE,歌劇,safari和鉻)。誰能幫我嗎?

+0

jQuery的還是普通的JavaScript? – ThiefMaster

+0

也許嘗試使用location.replace('admin.jsp?action = logout'); –

回答

6

使用同步XHR要做到這一點,並使用卸載事件,而不是onbeforeunload的:

window.addEventListener('unload', function() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'admin.jsp?action=logout', false); 
    xhr.send(null); 
}, false); 
+0

我不知道所有的瀏覽器都會允許。 [看到這個問題](http://stackoverflow.com/questions/7560532/what-c​​an-i-put-in-beforeunload);我正在尋找更多「真實」的文檔。 – Pointy

+0

我認爲它應該適用於所有瀏覽器。在卸載事件完成之前不應該發生卸載 - 並且處理程序甚至在xhr完成之前不會返回。 – ThiefMaster

+0

@ThiefMaster:嗯,我試過你的代碼,但顯然它沒有如預期的那樣工作,因爲當我查看數據庫時,用戶仍然在那裏。但的確,它在用戶重新登錄時更新數據庫。它與我以前的代碼不同,它完全從數據庫中刪除。任何建議? –