gpt4 book ai didi

javascript - setInterval 在 background.js 的 Chrome 扩展中

转载 作者:行者123 更新时间:2023-12-05 06:02:01 30 4
gpt4 key购买 nike

在 Chrome 扩展中的 background.js 中的 setInterval 上有很多类似的问题,但没有一个答案对我有用。我有一个简单的扩展程序,它通过调用 API 并检查是否有 200 响应来检查与服务器的连接,然后相应地更新托盘中的扩展程序图标。

背景.js

chrome.runtime.onInstalled.addListener(() => {

chrome.browserAction.setIcon({path: "/images/checking.png"});
console.log('VPN check extension started');
// main block - make API calls periodically and monitor the server response
async function ping() {
try {
const response = await axios.get('http://[IP]/api/v1/ping', {
timeout: 4000
});
access = response.status;
if (access == 200) {
chrome.browserAction.setIcon({path: "/images/OK_53017.png"});
} else {
chrome.browserAction.setIcon({path: "/images/not_OK.png"});
}
} catch (error) {
chrome.browserAction.setIcon({path: "/images/not_OK.png"});
}
}

window.setInterval(ping, 1000 * 10);
});

chrome.runtime.onStartup.addListener(() => {

chrome.browserAction.setIcon({path: "/images/checking.png"});
console.log('VPN check extension started');
// main block - make API calls periodically and monitor the server response
async function ping() {
try {
const response = await axios.get('http://[IP]/api/v1/ping', {
timeout: 4000
});
access = response.status;
if (access == 200) {

chrome.browserAction.setIcon({path: "/images/OK_53017.png"});
} else {
chrome.browserAction.setIcon({path: "/images/not_OK.png"});
}
} catch (error) {
chrome.browserAction.setIcon({path: "/images/not_OK.png"});
console.log('error');
}
}

window.setInterval(ping, 1000 * 10);
});

onStartup 和 onInstalled 都无法正常工作 - 当我重新启动 Chrome 或切换窗口时,扩展程序变得无响应。

list

{
"name": "Access status",
"version": "0.0.3",
"description": "Chrome extension to check if access to the network is provided.",
"background": {
"scripts": ["axios.min.js", "background.js"],
"persistent": false
},
"browser_action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/checking.png"
},
"icons": {
"16": "images/checking.png"
}
},
"permissions": ["<all_urls>"],
"manifest_version": 2,
}

content.js 是空的

关于如何使其工作的任何建议,无论哪个选项卡处于焦点或哪个窗口打开,并让它设置新 Chrome 打开的时间间隔?谢谢

最佳答案

快速谷歌搜索 this post .基本上,您应该尝试使用警报 API,因为 chrome 只会终止您的后台脚本以优化性能。

如果您的背景为 persistent: true,您的代码可能至少会在有人重新启动浏览器之前正常工作。然而,该选项现在似乎已被弃用。

关于javascript - setInterval 在 background.js 的 Chrome 扩展中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67053482/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com