繁体   English   中英

刷新页面,直到它更改 chrome 扩展

[英]refresh page until it changes chrome extension

我正在为刷新页面的谷歌浏览器构建扩展,直到它更改其链接。 我试过这段代码,但没有奏效:

 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 就会丢失。 因此,您需要在侦听器 scope 之外维护 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/*"]
}

编辑:已更新代码以添加相关控制台日志。 添加清单以确保添加所需的权限

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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