2010-04-27 8 views
2

頁面卸載可能有不同的原因:
1用戶關閉當前窗口。
2用戶導航到其他位置。
3單擊後退,前進,刷新或主頁按鈕。
4用戶提交表單,然後瀏覽器開始卸載當前頁面並載入頁面,並提交表單結果。 (假設當前窗口是窗體的目標)。
5等等...

我可以以某種方式知道onunload的處理程序卸載的原因是第4頁,即移動到頁面提交表單的結果嗎?
我可以在提交表單時定義一些標誌,但這並不能解決問題。由於來自Web服務器的響應(在表單提交上)需要一些時間,因此瀏覽器不會立即卸載當前頁面並等待來自服務器的響應。在此期間,用戶可能會關閉窗口或在任何地方導航。我需要知道它是否真的轉向結果頁面或其他內容......?如何在IE的onnload事件中獲取頁面卸載的原因?

回答

1

您可以劫持其中的一些事件。

例如,對於鏈接,您可以添加在鏈接的事件處理程序,節省了他們的href屬性,執行您需要什麼,然後設置window.locationhref你已經保存在一個變量。

+0

謝謝,但我需要抓住所有案例......或者一個案例 - 移動到提交結果頁面。目前我使用框架(即onunload事件在主窗口上,表格在主窗口內框架中),但這種方法也有缺點。 – 2010-04-27 05:56:18

0

頁面卸載的確切原因無法在卸載處理程序中知道。 OnUnload事件不是一個標準,並且首先由IE實現。

不同的瀏覽器可能會以不同的方式處理它,並針對不同的情況觸發事件。

msdn reference

mozilla reference

所以,如果你想知道在卸載處理程序卸載的原因,我想你可能是出於運氣。然而,正如Alex在他的回答中指出的那樣,通過點擊頁面上的某個鏈接,您可以通過讓這些鏈接的點擊處理程序更加智能化,來了解用戶是否可以從頁面導航。