我正在为 google chrome 构建扩展,刷新页面,直到它更改其链接。我试过这段代码,但没有用:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (/^https:\/\/meet.google.com\/lookup/.test(changeInfo.url)) {
var intervalId = window.setInterval(function() {
var code = 'window.location.reload(); ';
chrome.tabs.executeScript(tab.id, {code: code});
}, 30000);
}
else {
window.clearInterval(intervalId)
}
});
我想在 meet.google.com/lookup/ 更改另一个链接时停止刷新,这也可能是 meet.google.com 或 meet.google.com/abcdef/。所以它刷新页面,但是当google meet的链接发生变化时,它一直刷新页面。我该如何解决?谢谢大家!
PS:为了更容易理解,我在评论中添加了我的答案
我假设您的目标是每三十秒刷新一次标签,除非它的位置是 meet.google...(您使用的正则表达式)。
如果这是您的目标,那么这里的问题是一旦执行事件侦听器,intervalID 就会丢失。因此,您需要在侦听器范围之外维护 intervalID,以便在该选项卡更改 URL 时可以清除它。
我有下面的代码,试试这个
var intervalMap = {};
function handleUpdated(tabId, changeInfo, tabInfo) {
if (changeInfo.url) {
console.log("Tab: " + tabId + " URL changed to " + changeInfo.url);
if (changeInfo.url.indexOf("https://meet.google.com/?authuser") > -1) {
console.log("Found URL to reload. Added interval");
var intervalId = window.setInterval(function () {
var code = "window.location.reload(); ";
chrome.tabs.executeScript(tabId, { code: code });
}, 3000);
//Save the intervalId to our map
intervalMap[tabId] = intervalId;
} else if (intervalMap[tabId]) {
//Take interval ID from map and clear it
console.log("Tab changed to differente URL. Removed interval");
window.clearInterval(intervalMap[tabId]);
}
}
}
chrome.tabs.onUpdated.addListener(handleUpdated);
清单(第 2 版)
{
"name": "Test",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions": ["background", "tabs", "https://meet.google.com/*"]
}
编辑:已更新代码以添加相关的控制台日志。添加了清单以确保添加了所需的权限
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句