【发布时间】:2011-07-21 12:32:22
【问题描述】:
如何遍历用户打开的所有选项卡,然后检查他们是否有带有id = 'item' 的特定 HTML 项目?
【问题讨论】:
-
你能更新选择的答案吗?该 API 现已弃用。
标签: javascript google-chrome-extension browser-tab
如何遍历用户打开的所有选项卡,然后检查他们是否有带有id = 'item' 的特定 HTML 项目?
【问题讨论】:
标签: javascript google-chrome-extension browser-tab
你可以这样:
chrome.tabs.getAllInWindow(null, function(tabs){
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.sendRequest(tabs[i].id, { action: "xxx" });
}
});
之后要照看你的物品,如果你可以这样:
document.getElementById('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?
null 而不是 {},会发生什么?
这是一种未弃用的原版方式(2019 年 5 月):
chrome.tabs.query({}, function(tabs){
tabs.forEach(tb => {
chrome.tabs.sendMessage(tb.id, { action: "xxx" });
});
});
【讨论】:
{ highlighted: true }(如焦点选项卡)和 { hightlighted: false } - 全部其他的 - 真正经历所有这些。
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。
【讨论】: