gpt4 book ai didi

javascript - 强制网页的所有打开实例在 Google Chrome 网络应用程序中刷新

转载 作者:行者123 更新时间:2023-11-30 06:06:19 26 4
gpt4 key购买 nike

我一直在尝试为 Google Chrome 网络应用程序制作一个 JavaScript 函数来检查是否有任何打开的应用程序实例,如果有,则强制它们刷新页面。

我的原代码如下:

chrome.tabs.getAllInWindow(undefined, function(tabs) {
for (var i = 0, tab; tab = tabs[i]; i++) {
if (tab.url == "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html") {
chrome.tabs.update(tab.id, {url: "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html"});
}
}
});

但这只适用于当前窗口内的所有选项卡。如果自己的窗口或其他窗口中有实例,则不会刷新。

我对其进行了调整,以使其适用于所有打开的页面,而不仅仅是像这样在当前选定窗口中的页面:

chrome.windows.getAll({populate: true}, function(tabs) {
for (var i = 0, tab; tab = tabs[i]; i++) {
if (tab.url == "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html") {
chrome.tabs.update(tab.id, {url: "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html"});
}
}
});

虽然新代码没有在 JavaScript 控制台中返回错误,但它似乎没有做它应该做的事情;刷新应用程序页面的任何打开实例。

我是否误解了 windows.getAll 模块?谁能提供可行的解决方案?

最佳答案

chrome.windows.getAll 返回一组窗口,而不是标签。每个窗口都包含一组选项卡。我现在不记得 tabs 数组是如何调用的,我假设它是 tabs(只需将返回的窗口转储到控制台并检查):

chrome.windows.getAll({populate: true}, function(windows) {
console.log(windows);
for (var w = 0; w < windows.length; w++) {
for (var i = 0; i < windows[w].tabs.length; i++) {
var tab = windows[w].tabs[i];
if (tab.url == "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html") {
chrome.tabs.update(tab.id, {url: "chrome-extension://" + chrome.i18n.getMessage("@@extension_id") + "/html/application.html"});
}
}
}
});

关于javascript - 强制网页的所有打开实例在 Google Chrome 网络应用程序中刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com