2015-07-10 134 views
0

我剛剛發現以下(由多個斷點設置到了客戶端和服務器端代碼):瀏覽器發送HTTP請求之前,執行「卸載」處理

如果你有一個window.onunload處理 - 它會在瀏覽器發送http請求到新頁面後執行。

  1. 現在離開,到下一個頁面
  2. 瀏覽器發送HTTP請求到新的頁面
  3. 瀏覽器中執行卸載處理,只是暫停渲染過程,直到它完成執行它。
  4. 顯示新頁面。

我剛剛用Chrome和Firefox測試了這個。

怎麼回事?你認爲這種奇怪行爲的原因是什麼?

PS。下面是我發現這個的方法:我有一個卸載處理程序,它通過ajax保存了一些數據。然後我發現我正在瀏覽的新頁面仍然顯示來自數據庫的舊數據。這讓我想到了......

回答

1

HTML規範有一個部分Navigating across documents,它描述了當您導航到瀏覽器中的新頁面時(例如通過鏈接)的過程。說的步驟

卸載當前條目的Document對象,並將recycle參數設置爲false。

直到獲取新文檔後才執行。

這似乎是因爲遵循鏈接可能並不總是導致當前文檔被卸載。例如,如果響應包含Content-disposition: attachment,則鏈接的目標將被下載,但當前頁面不會被卸載。