繁体   English   中英

我的 chrome“sleep”扩展似乎没有运行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM