
firefox 扩展中可通过 browser.tabs.query({ highlighted: true }) 获取用户通过 ctrl/cmd 键多选的标签页,该属性准确对应 ui 中高亮(即“已选中”)状态的标签,适用于批量隐藏、卸载或操作等场景。
firefox 扩展中可通过 browser.tabs.query({ highlighted: true }) 获取用户通过 ctrl/cmd 键多选的标签页,该属性准确对应 ui 中高亮(即“已选中”)状态的标签,适用于批量隐藏、卸载或操作等场景。
在 Firefox 浏览器中,当用户按住 Ctrl(Windows/Linux)或 Cmd(macOS)并点击多个标签页时,这些标签会进入“高亮选中”(highlighted)状态——这与单个活动标签的 active: true 不同,也区别于传统意义上的 selected(该字段在 WebExtensions API 中已被弃用且不支持多选)。Firefox 的 WebExtensions API 专门为此提供了 highlighted: true 查询条件,它是唯一可靠识别多选标签的方式。
✅ 正确用法示例:
// 查询当前窗口中所有被 Ctrl/Cmd 多选的标签页
browser.tabs.query({ highlighted: true })
.then(tabs => {
console.log(`共选中 ${tabs.length} 个标签页`);
tabs.forEach(tab => {
console.log(`Tab ID: ${tab.id}, URL: ${tab.url}`);
});
});
⚠️ 注意事项:
- highlighted: true 仅返回当前窗口内处于高亮状态的标签页(即用户可见窗口中被选中的那些),不会跨窗口匹配;
- 若用户仅选中一个标签,highlighted: true 仍会返回该标签(因为单标签默认也是高亮的),因此无需额外判断数量;
- 不要混淆 active: true(仅当前焦点标签)和 currentWindow: true(当前窗口全部标签)——它们无法表达多选语义;
- 该 API 无需额外权限,但执行标签操作(如 browser.tabs.discard() 或 browser.tabs.hide())需在 manifest.json 中声明对应权限,例如:
"permissions": ["tabs", "tabHide"] // 后者为 hide() 所需(Firefox 113+)
? 实用扩展场景示例(批量卸载):
async function discardSelectedTabs() {
const tabs = await browser.tabs.query({ highlighted: true });
await Promise.all(
tabs.map(tab => browser.tabs.discard(tab.id))
);
}
总结:highlighted: true 是 Firefox WebExtensions 中专为多选标签设计的核心查询标识,是替代已不存在的 selected: true 的标准方案。掌握这一特性,即可稳健实现标签批量管理功能。











