Chrome.storage.sync - 会保留他们的数据吗?
我正在使用'chrome.storage.sync.get/set
'来保存我的数据。我的问题是,当我关闭Chrome浏览器窗口并再次打开时,使用此API保存的数据会重置。有没有什么方法可以清除我们退出Chrome时保存的数据?我知道有一种方法'chrome.storage.sync.clear()
'。但是,只有当用户退出chrome时才会发生这种情况。Chrome.storage.sync - 会保留他们的数据吗?
你是对的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
事件和做要紧。我希望它能让你开始朝正确的方向发展。
如果有效,我很惊讶没有人在[本次Chrome问题]中提到它(https://code.google.com/p/chromium/issues/detail?id=30885)。 – 2014-10-08 07:37:22
这并没有工作 – abhilash 2014-10-08 09:59:26
会使用这个API当我关闭Chrome浏览器窗口将被重置,然后再次打开它
不,它保存 —不只是本地保存数据,但也有可能同步到用户的谷歌帐户。这就是sync
存储区的要点。 The documentation说sync
就像localStorage
,但同步到用户的帐户。
如果您将其用于临时数据,则不要。改为使用local
(因为它看起来不像是会话存储的扩展),也可能只是将数据存储在扩展的运行时环境中(目前尚不清楚你使用的是什么)。
我知道有一种方法
chrome.storage.sync.clear()
。但是,只有当用户退出chrome时才会发生这种情况。
您必须从活动中触发clear
。不幸的是,目前还没有正式的方式让Chrome扩展程序在Chrome浏览器关闭时收到通知(there's an open issue on it)。希望在某些时候会有办法,但目前还没有。
你至少有两个问题。最好每个问题询问**一个**问题。 – 2014-10-08 07:10:30