如果方法SetBadgeText不丢失计数数字,这是可能的吗?我挣扎的是,当我单击一个按钮和计数器开始计算数字时,之后我将检查其他一些页面,有时计数从零开始,同样的事情是当我想关闭 chrome 并再次打开它时。如何将您的实际 setBadgeText 号码保存在内存中并从最新的号码开始而不会丢失它?
背景.js
var counter = 0;
chrome.runtime.onMessage.addListener(message => {
if(message === 'clicked') {
counter += 1;
chrome.browserAction.setBadgeText({
text: counter.toString()
});
}
});
内容脚本.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"
}
}
使用存储 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"
]
}