如果方法SetBadgeText没有丢失计数数字?我正在努力的是,当我点击一个按钮并且计数器开始计算数字之后,我将检查其他一些页面,有时计数从零开始,同样的事情是当我想关闭chrome并再次打开它时。如何才能将实际的setBadgeText数保存在内存中并从最新版本开始而不会丢失它?
background.js
var counter = 0;
chrome.runtime.onMessage.addListener(message => {
if(message === 'clicked') {
counter += 1;
chrome.browserAction.setBadgeText({
text: counter.toString()
});
}
});
内容的script.js
document.body.addEventListener('click', e => {
if(e.target.matches('[value="Google Search"]')) {
chrome.runtime.sendMessage('clicked')
}
});
的manifest.json
{
"manifest_version": 2,
"name": "Counter",
"version": "1.0",
"content_scripts": [
{
"matches": ["https://*/*"],
"run_at": "document_end",
"js": ["content-script.js"]
}
],
"description": "description",
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "counter"
}
}
答案 0 :(得分:1)
使用存储API:https://developer.chrome.com/apps/storage
“同步”存储会同步到您登录的任何Chrome浏览器。 “本地”存储是,呃,本地。
以下是将存储API集成到示例中的方法:
// background.js
chrome.runtime.onMessage.addListener(message => {
if(message === 'clicked') {
chrome.storage.local.get('counter', ({counter}) => {
counter += 1;
chrome.browserAction.setBadgeText({
text: counter.toString()
});
chrome.storage.local.set('counter', counter)
})
}
});
您还需要为清单添加“存储”权限:
// manifest.json
{
...
"browser_action": {
"default_title": "counter"
},
permissions: [
"storage"
]
}