chrome.tabs.query
是 Chrome 扩展开发中用于查询浏览器标签页信息的 API。它允许你根据指定的条件获取当前浏览器中所有匹配的标签页。这个 API 返回一个 Promise
,解析后会得到一个包含匹配标签页信息的数组。
常见用途
- 获取当前活动标签页:可以获取当前用户正在查看的标签页信息。
- 根据 URL 查询标签页:可以查找具有特定 URL 的标签页。
- 获取所有标签页:可以获取浏览器中所有打开的标签页信息。
- 根据标题或其他属性查询标签页:可以基于标签页的标题或其他属性进行查询。
基本语法
javascript">chrome.tabs.query(queryInfo, callback)
queryInfo
:一个对象,包含查询条件。常见的查询条件包括:active
:布尔值,表示是否查询活动标签页。currentWindow
:布尔值,表示是否仅查询当前窗口的标签页。lastFocusedWindow
:布尔值,表示是否查询最后聚焦的窗口中的标签页。url
:字符串或字符串数组,表示要匹配的 URL 模式。title
:字符串,表示要匹配的标签页标题。status
:标签页的状态,如"loading"
或"complete"
。
callback
:回调函数,当查询完成时调用。回调函数的参数是一个数组,包含匹配的标签页信息。
示例代码
示例 1:获取当前活动标签页
javascript">chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {if (tabs.length > 0) {const activeTab = tabs[0];console.log('当前活动标签页的 URL:', activeTab.url);}
});
示例 2:根据 URL 查询标签页
javascript">chrome.tabs.query({ url: 'https://*/*' }, (tabs) => {console.log('所有 HTTPS 标签页:', tabs);
});
示例 3:获取所有标签页
javascript">chrome.tabs.query({}, (tabs) => {console.log('所有标签页:', tabs);
});
示例 4:根据标题查询标签页
javascript">chrome.tabs.query({ title: 'Google' }, (tabs) => {console.log('标题包含 "Google" 的标签页:', tabs);
});
注意事项
- 权限:使用
chrome.tabs.query
需要在manifest.json
中声明"tabs"
权限。{"permissions": ["tabs"] }
- 异步操作:
chrome.tabs.query
是一个异步操作,需要处理回调或使用async/await
。 - 查询条件:可以组合多个查询条件来精确匹配标签页。
通过合理使用 chrome.tabs.query
,你可以实现许多有用的功能,比如获取用户当前浏览的页面信息、查找特定页面等。