我将如何遍历用户打开的所有选项卡,然后检查他们是否有特定的 HTML 项目id = 'item'
?
问问题
30233 次
4 回答
71
看来这种方法已被弃用,取而代之的是chrome.tabs.query
:
http://developer.chrome.com/extensions/tabs.html#method-query
所以现在你想做:
chrome.tabs.query({}, function(tabs) { /* blah */ } );
传递一个空queryInfo
参数将返回所有选项卡。
于 2013-03-07T21:20:43.627 回答
23
你可以这样:
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 所以第一个代码片段用于背景页面,第二个必须在内容脚本上;)
于 2011-03-23T17:30:17.857 回答
2
这是一种未弃用的香草方式(2019 年 5 月):
chrome.tabs.query({}, function(tabs){
tabs.forEach(tb => {
chrome.tabs.sendMessage(tb.id, { action: "xxx" });
});
});
于 2019-05-31T16:32:10.307 回答
1
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。
于 2021-08-14T21:09:19.180 回答