首页 > 解决方案 > 如何无限查找标签状态?

问题描述

我正在开发一个自动刷新 chrome 扩展,用户将在其中放置要观察的 URL 以及错误文本(如果有)!此外,刷新计时器将说明选项卡应自动刷新的秒数。

到目前为止我做了什么

  1. 获取输入并将其保存到 localStorage
  2. 一个定时器为 0 的 setInterval 函数,所以要始终寻找变化!
  3. 能够在需要时将 localStorage 变量提取为 &
  4. 运行自动重新加载功能(但这是错误!)

我想达到什么目的?

仅当页面的数据与 localStorage 中的数据匹配时才重新加载当前活动的选项卡。

我面临的问题是什么?

当正文中的文本与 localStorage 中的数据匹配时,放置一个重新加载选项卡的函数后,页面会按预期在指定的持续时间内正确重新加载,但即使在页面处于正确响应后也会重新加载。

例如,当页面出现 404 No found 错误时,扩展程序会查找它并自动刷新,但即使页面可用并有 200 OK 响应,它也会继续自动重新加载。

后台JS代码

var mytabs = {
    data: []
};
var countedtabs = [];
var actveurls = [];
var refreshtimer = '';
var ispageactive = false;
var d = new Date();
var n = d['getDay']();
setInterval(function() {
    chrome['tabs']['query']({
        active: true,
        windowType: 'normal',
        currentWindow: true
    }, function(d) {
        var parsed_urls = [];
        const ls_urls_string = localStorage['getItem']('url_to_check');
        if (ls_urls_string && ls_urls_string['length']) {
            parsed_urls = JSON['parse'](ls_urls_string);
            var current_url = parsed_urls['indexOf'](d[0]['url']);
            if (current_url > -1) {
                mytabs['data']['push']({
                    arrayindex: current_url,
                    tabid: d[0]['id'],
                    url: parsed_urls[parsed_urls['indexOf'](d[0]['url'])]
                });
                if (countedtabs['indexOf'](d[0]['id']) > -1) {
                    countedtabs[countedtabs['indexOf'](d[0]['id'])] = d[0]['id']
                } else {
                    countedtabs['push'](d[0]['id'])
                }
            }
        };
    })
}, 0);
refreshtimer = setInterval(function() {
    reload()
        // defualt time to auto-reload is 3 seconds
}, 1000 * 3);

function reload() {
    chrome['tabs']['getAllInWindow'](null, function(tabs) {
        for (var i = 0; i < tabs['length']; i++) {
            if (countedtabs['indexOf'](tabs[i]['id']) > -1 && actveurls['indexOf'](tabs[i]['url']) == -1 && [2, 3]['includes'](n)) {
                chrome['tabs']['reload'](tabs[i]['id'])
            }
        }
    })
}

标签: javascriptgoogle-chromegoogle-chrome-extension

解决方案


推荐阅读