javascript - 如何无限查找标签状态?
问题描述
我正在开发一个自动刷新 chrome 扩展,用户将在其中放置要观察的 URL 以及错误文本(如果有)!此外,刷新计时器将说明选项卡应自动刷新的秒数。
到目前为止我做了什么
- 获取输入并将其保存到 localStorage
- 一个定时器为 0 的 setInterval 函数,所以要始终寻找变化!
- 能够在需要时将 localStorage 变量提取为 &
- 运行自动重新加载功能(但这是错误!)
我想达到什么目的?
仅当页面的数据与 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'])
}
}
})
}
解决方案
推荐阅读
- machine-learning - 对 DSSM 中的单词散列感到困惑?
- r - 我可以与 R_PosInf 进行比较吗
- python - opencv 在 osx 上安装没有合适的图像错误
- javascript - 以本地语言添加月份到日期功能
- python - tensorlflow中每个特征的高效多特征相似度
- r - R 中的软件包安装在 MacOS 上失败
- java - 使用 NetBeans 8.2 创建 Maven 企业应用程序
- mysql - 为 Google Cloud SQL 实例启用“仅允许 SSL 连接”并从配置 SSL 的 Spring 应用程序连接到它
- html - 如何在Angular4中的两行产品之间留出空间
- javascript - 在段落内的 JSX 字符串中添加新行 - React