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

淡水河谷2202

我正在为 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章