2014-10-08 106 views
2

我正在使用'chrome.storage.sync.get/set'來保存我的數據。我的問題是,當我關閉Chrome瀏覽器窗口並再次打開時,使用此API保存的數據會重置。有沒有什麼方法可以清除我們退出Chrome時保存的數據?我知道有一種方法'chrome.storage.sync.clear()'。但是,只有當用戶退出chrome時纔會發生這種情況。Chrome.storage.sync - 會保留他們的數據嗎?

+0

你至少有兩個問題。最好每個問題詢問**一個**問題。 – 2014-10-08 07:10:30

回答

0

你是對的chrome.storage.sync.clear(),從同步中刪除所有存儲。但是,如果您想在瀏覽器「存在」時使用該功能,則必須查看Processes Api

你可能會想要使用此功能(從文件):

chrome.processes.onExited.addListener(function(){...}); 

它需要processId作爲參數之一。因此,您只需要掌握browser流程的processId。我只在SO上發現了relevant answer。這表明你做這樣的事情:

//Basically loop through all the processes to get the browser's Process Id 
var browserId; 
chrome.processes.getProcessInfo([], false, function(processes) { 
processes.forEach(function(process) { 
    if (process.type === 'browser') { 
     browserId = process.id; 
    } 
    }); 
}); 

一旦你的瀏覽器的進程ID,您可以將監聽器添加到exit事件和做要緊。我希望它能讓你開始朝正確的方向發展。

+0

如果有效,我很驚訝沒有人在[本次Chrome問題]中提到它(https://code.google.com/p/chromium/issues/detail?id=30885)。 – 2014-10-08 07:37:22

+0

這並沒有工作 – abhilash 2014-10-08 09:59:26

1

會使用這個API當我關閉Chrome瀏覽器窗口將被重置,然後再次打開它

不,它保存  —不只是本地保存數據,但也有可能同步到用戶的谷歌帳戶。這就是sync存儲區的要點。 The documentationsync就像localStorage,但同步到用戶的帳戶。

如果您將其用於臨時數據,則不要。改爲使用local(因爲它看起來不像是會話存儲的擴展),也可能只是將數據存儲在擴展的運行時環境中(目前尚不清楚你使用的是什麼)。

我知道有一種方法chrome.storage.sync.clear()。但是,只有當用戶退出chrome時纔會發生這種情況。

您必須從活動中觸發clear。不幸的是,目前還沒有正式的方式讓Chrome擴展程序在Chrome瀏覽器關閉時收到通知(there's an open issue on it)。希望在某些時候會有辦法,但目前還沒有。

+0

但即使我已經從chrome賬戶退出 – abhilash 2014-10-08 09:04:39

+0

,我仍然可以通過監聽端口發現另一種方式。 – abhilash 2014-10-08 09:45:34

+0

@abhilash:*「但即使我已經從Chrome賬戶註銷,它也能正常工作」*正確,因爲它的行爲就像本地存儲一樣,如果連接,它也會**同步到賬戶*。 *「我發現了另一種方式,可以通過聽港口。」*酷!什麼港口? – 2014-10-08 10:19:33

相關問題