有給Javascript onUnload
的方法嗎?我使用JSP雅加達Struts框架與Servlets。替代JavaScript的onunload的
我必須知道,何時是窗戶關閉,因爲不是大家點擊註銷按鈕。
你如何在你的應用程序中處理它?
有給Javascript onUnload
的方法嗎?我使用JSP雅加達Struts框架與Servlets。替代JavaScript的onunload的
我必須知道,何時是窗戶關閉,因爲不是大家點擊註銷按鈕。
你如何在你的應用程序中處理它?
一般來說,是不可能有定論是否訪問者仍然是「使用」(或連看)你的頁面。一旦瀏覽器下載了頁面,它就不再與服務器聯繫了,所以頁面可以保持打開狀態幾秒或幾年,服務器就不知道了。
unload
事件當然是一個有用的線索,因爲它通常在頁面卸載時觸發。然而,這並不可靠。有很多情況下,它不會觸發,而且有很多情況下,即使它啓動了,服務器仍然不知情。
例如:瀏覽器(甚至操作系統)可能會崩潰,或者電源就外出。使用Wi-Fi的訪客可能會斷開連接,或在使用您的網站時將iPhone帶入隧道。
標準的辦法解決這個 - 我們都願意承認是可怕的 - 就是讓訪客的會話超時。即使在高風險的銀行網站上,你也會發現,如果你離開電腦四分鐘,然後回來,你仍然可以訪問,但如果你走了五個,你就會被鎖定。
此設置肯定會發現很多誤報:訪問者仍在使用您的網頁而未與其交互的情況,因此由於超時而不便。它也允許出現假陰性:真實訪問者已經走開,惡意用戶在超時期限內接管的情況。
唯一的主要除了這個方案,我們已經看到最近是JavaScript的開採到明顯的超時時間後註銷用戶。我們再一次在銀行網站上看到這一點:讓頁面打開太久,當你回來時你會看到一個登錄屏幕。 (當然,這也取決於JavaScript,因此仍然存在錯誤)。
不幸的是,由於HTTP是一種無狀態協議,我們永遠無法確定瀏覽器中發生了什麼事情(特別是JavaScript是關閉),所以我們可以使用這麼便宜的解決方法。
你應該知道,Opera不執行onunload的,你會懷疑。而且你不應該依賴javascript來查看用戶是否關閉了窗口。
是的,但我正在尋找onunload事件的替代方案... – wokena 2009-08-29 13:52:05
我依靠servlet會話超時自動處理註銷。您可以在會話超時時註冊一個處理程序,以涵蓋您需要執行的任何憑證清理。一個很好的例子在這裏給出:
http://www.xyzws.com/Servletfaq/when-do-i-use-httpsessionlistener/7
沒有從客戶端保證用戶總是會確認他們使用你的網站完成。
我不會說這是_impossible_,只是很難。總是有Flash + Webcam +移動偵測+人臉檢測。 – 2009-08-29 15:36:23