2014-10-08 107 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

相关问题