簡體   English   中英

JavaScript問題:Onbeforeunload還是Onunload?

[英]JavaScript question: Onbeforeunload or Onunload?

因此,當刷新頁面或用戶退出頁面以供將來使用時,我想在瀏覽器的localstorage中存儲一些信息。 我想我會使用一些Javascript來檢測事件並存儲頁面訪問的狀態。

現在我的困境是:我應該使用Onbeforeunload或Onunload方法來實現這個目標嗎?

謝謝

為什么不注冊它只是為了安全起見? 只需讓監聽器檢查數據是否已存儲並提前退出。

這是使用事件屬性的快速示例:

window.onunload = window.onbeforeunload = (function(){

  var didMyThingYet=false;

  return function(){
    if (didMyThingYet) return;
    didMyThingYet=true;
    // do your thing here...
  }

}());

或者您可以使用attachEvent:

(function(){

  var didMyThingYet=false;

  function listener (){
    if (didMyThingYet) return;
    didMyThingYet=true;
    // do your thing here...
  }

  window.attachEvent("onbeforeunload", listener);
  window.attachEvent("onunload", listener);    

}());

適當的地方是onunload。 onbeforenload意味着在您可能需要阻止用戶離開頁面時使用,例如當存在未保存的數據時。

我會厭倦編寫代碼來涵蓋所有案例,因為你不願意測試所有案例。 如果您進行研究並發現它在瀏覽器中過於復雜,是的,請繼續並盡可能多地做。 但是,我相信在onunload上進行本地存儲沒有問題。 我確實遇到了一個問題,試圖將信息發送到服務器onunload。 這在瀏覽器中並沒有可靠地發生,所以我最終得到的方法是使用卸載和beforeunload,但只是在盡職調查之后。

所以我的建議是onunload,檢查所有的瀏覽器。

我相信Onbeforeunload是一個安全的賭注。 瀏覽器可能無法完全執行onunload腳本 - 例如,如果onunload中有警報,則關閉窗口時不會顯示chrome。

根據我的經驗:使用onunload因為Opera不支持其他事件。 是的,我知道...... 歌劇 ...但仍然:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM