2012-06-07 111 views
0

在我的瀏覽器擴展程序,我想使內存在用戶偏好的任何改變擴展運行時,只有保存的偏好(作爲JSON OBJ)到localStorage的分機時,即將終止(我在我的擴展中使用背景HTML頁面)。確定擴展狀態

我目前正在寫到localStorage的每一個偏好改變的時間,但我想看看是否可以這樣做更有效的避免在每個喜好變動寫入磁盤,而是終止之前就去做一次。

有沒有辦法知道分機時,被終止或者沒有人知道一個更好的方法來處理這種情況的?

+1

這是不可能的。 ['management' API](http://code.google.com/chrome/extensions/management.html#global-events)提供了用於卸載擴展的事件。但是,當擴展被禁用時,事件監聽器中的代碼不再被觸發,因爲擴展的生命週期已經結束。 –

回答

0

這是否幫助?

function saveSettings(){ 
    window.clearTimeout(window.savingSettings); 
    return window.savingSettings = window.setTimeout(function(){ 
     ... // write to local storage here. 
    },2000) 
}; 

這將確保:

  1. 有保存操作之間至少兩秒鐘
  2. 整件事運行有所並行主線程

你應該去看演出有一定程度的提升,但有一個問題。如果用戶在更改pref後不等待這兩秒鐘而關閉瀏覽器,則不會保存prefs。