我正在使用“chrome.storage.sync.get/set
”来保存我的数据。我的问题是,当我关闭Chrome浏览器窗口并再次打开时,使用此API保存的数据是否会重置。有没有方法可以清除退出chrome时保存的数据?我知道有一种方法'chrome.storage.sync.clear()
'。但这只有在用户退出chrome时才会发生。
答案 0 :(得分:1)
当我关闭Chrome浏览器窗口并再次打开时,使用此API保存的数据将被重置
不,它已保存 - 不仅在本地,还可能同步到用户的Google帐户。这就是sync
存储区域的重点。 The documentation说sync
与localStorage
类似,但已同步到用户的帐户。
如果您将其用于瞬态数据,请不要。改为使用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
事件添加一个监听器并完成所需的操作。我希望它能让你开始朝着正确的方向前进。