Chrome.storage.sync - 会保留他们的数据吗?

时间:2014-10-08 06:57:01

标签: javascript google-chrome google-chrome-extension

我正在使用“chrome.storage.sync.get/set”来保存我的数据。我的问题是,当我关闭Chrome浏览器窗口并再次打开时,使用此API保存的数据是否会重置。有没有方法可以清除退出chrome时保存的数据?我知道有一种方法'chrome.storage.sync.clear()'。但这只有在用户退出chrome时才会发生。

2 个答案:

答案 0 :(得分:1)

  

当我关闭Chrome浏览器窗口并再次打开时,使用此API保存的数据将被重置

不,它已保存 - 不仅在本地,还可能同步到用户的Google帐户。这就是sync存储区域的重点。 The documentationsynclocalStorage类似,但已同步到用户的帐户。

如果您将其用于瞬态数据,请不要。改为使用local(因为似乎没有相当于会话存储的扩展名)或者可能只是将数据存储在扩展的运行时环境中(目前还不清楚你使用的是什么)。

  

我知道有一种方法chrome.storage.sync.clear()。但这只有在用户退出chrome时才会发生。

您必须从某个活动中触发clear。不幸的是,目前还没有正式的方法可以让Chrome在关闭时收到通知(there's an open issue on it)。希望在某些方面会有一种方法,但目前还没有。

答案 1 :(得分:0)

您正确chrome.storage.sync.clear(),从同步中删除所有存储空间。但是,如果您想在浏览器“存在”时使用该功能,则必须查看Processes Api

你可能想要使用这个功能(来自文档):

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

它需要processId作为参数之一。因此,您只需抓住processId进程的browser即可。我只在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;
    }
   });
});

获得浏览器的Process ID后,您可以为exit事件添加一个监听器并完成所需的操作。我希望它能让你开始朝着正确的方向前进。