Chrome-Extension:遍历所有选项卡?
如何遍历用户打开的所有选项卡,然后检查他们是否具有 id = 'item'
的特定 HTML 项目?
How would I iterate through all tabs a user has open and then check if they have a particular HTML item with id = 'item'
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
看来此方法已被弃用,取而代之的是
chrome.tabs.query
:http://developer.chrome.com/extensions/tabs.html#method-query
所以现在你想要做的是:
传递一个空的
queryInfo
参数将返回所有选项卡。It appears this method has been deprecated in favor of
chrome.tabs.query
:http://developer.chrome.com/extensions/tabs.html#method-query
So now you'd want to do:
Passing an empty
queryInfo
parameter would return all of the tabs.你可以这样做:
之后要照顾你的项目,如果你可以这样做:
不要忘记你不能使用“背景页面”来操作 HTML 所以第一个代码片段是针对背景页面,第二个必须位于内容脚本上;)
You can make it like this:
After that to look after your item, if you can make it like this :
Don't forget that you can't manipulate the HTML by using the "background page" So the first code snip is for the background page, and the second have to be on a content script ;)
2022 年 7 月编辑:
此答案最初是为 MV3 用户编写的。如果您正在寻找 MV2 答案,请参见上文。否则,这个答案将与 MV3 完美配合。
原始答案
chrome.tabs.query
是您正在寻找的函数。您可以将参数传递给对象来过滤选项卡。在您的情况下,您想要迭代所有打开的选项卡。以下是您要查找的代码的两个版本:异步回调版本
Promise 版本
在这两种情况下,参数
tab
都是 选项卡。Edit July 2022:
This answer was originally written for MV3 users. If you're looking for a MV2 answer, see above. Otherwise, this answer will work perfectly fine with MV3.
Original answer
chrome.tabs.query
is the function you're looking for. You can pass in parameters to a object to filter the tabs. In your case, you want to iterate over all the open tabs. Here's two versions of the code you're looking for:Asynchronous callback version
Promise version
In both cases, the parameter
tab
is a Tab.这是一种未弃用的普通方式(2019 年 5 月):
This is a not deprecated vanilla way (may 2019):