簡體   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