如何迭代遍历用户打开的所有标签页,并检查它们是否有一个特定的带有id = 'item'
的HTML项?
如何迭代遍历用户打开的所有标签页,并检查它们是否有一个特定的带有id = 'item'
的HTML项?
看起来这个方法已经过时了,现在推荐使用 chrome.tabs.query
:
http://developer.chrome.com/extensions/tabs.html#method-query
因此,现在你应该这样做:
chrome.tabs.query({}, function(tabs) { /* blah */ } );
如果传递一个空的queryInfo
参数,将返回所有选项卡。
tabs
是否有一个长度方法?大多数 API 方法只需要一个单独的标签页或标签页属性,因此您需要使用类似 tabs[0]...tabs[n]
的变量对它们进行索引。如何获得n? - jiggunjernull
而不是 {}
,会发生什么? - Pacerierchrome.tabs.getAllInWindow(null, function(tabs){
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.sendRequest(tabs[i].id, { action: "xxx" });
}
});
document.getElementById('item')
这个答案最初是为MV3用户编写的。如果你正在寻找MV2的答案,请参考上面的内容。否则,这个答案在MV3中也完全适用。
chrome.tabs.query
是你要找的函数。你可以传入参数来过滤标签页。在你的情况下,你想要遍历所有打开的标签页。下面是你要找的代码的两个版本:
chrome.tabs.query({}, function(tabs) {
tabs.forEach(function (tab) {
// do whatever you want with the tab
});
});
var tabs = await chrome.tabs.query({});
tabs.forEach(function (tab) {
// do whatever you want with the tab
});
tab
都是一个Tab。最初的回答:
chrome.tabs.query({}, function(tabs){
tabs.forEach(tb => {
chrome.tabs.sendMessage(tb.id, { action: "xxx" });
});
});
{ highlighted: true }
即当前选项卡和 { hightlighted: false }
即其他所有选项卡才能真正地遍历它们。 - Tiramonium