[英]my chrome “sleep” extension does not seem to run
我对 javascript 和 chrome 扩展很陌生,对编程也很陌生。
我的 manifest.json :
{
"name": "GetUp aSec",
"version": "1.0",
"description": "Be healthy, get up!",
"manifest_version": 2,
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content.js"
]
}
],
"browser_action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"background": {
"scripts": [
"background.js"
]
}
}
我的 background.js 是我在网上找到的一个函数,它承诺比正常的睡眠函数运行得更流畅,然后它每 52 分钟发送一条消息。
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
while (true) {
sleep(52000 * 60).then(() => {
chrome.tabs.query({ currentWindow: true, active: true },
function (tabs) {
chrome.tabs.sendMessage(tabs[0].id, 'its been 52 minutes! you should take a break.')
})
});
}
我的 content.js 只是一个监听器,希望能提醒消息。
chrome.runtime.onMessage.addListener(function (request) {
alert(request)
})
当我将它添加到 chrome 时,它不会给我任何错误,但它也没有做任何事情。 任何帮助?
打开Chrome的任务管理器,你会看到你的扩展是吃正在陷入无限100%的CPU while
循环。
切换到 async/await 语法以实际暂停循环的主体:
(async () => {
while (true) {
await sleep(52 * 60e3);
chrome.tabs.query({currentWindow: true, active: true}, tabs => {
chrome.tabs.sendMessage(tabs[0].id,
"It's been 52 minutes! You should take a break.");
});
}
})();
更好的是,让您的后台脚本仅按需加载( "persistent": false )并使用chrome.alarms API而不是带有 setTimeout 的无限循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.