Flutter Web如何获取同一窗口内已打开的标签页名称?
获取当前窗口已打开标签页名称的实现方案
以下分两种最常见的开发场景给出实现方式,无需额外第三方插件,调用官方原生接口即可完成:
场景1:浏览器扩展场景(Chromium/火狐/Safari通用)
这是最常见的需求场景,直接调用浏览器官方提供的标签页操作API即可实现:
- 首先需要在扩展的配置文件中声明标签页读取权限,以Chromium内核浏览器的Manifest V3版本为例,
manifest.json配置片段如下:
{ "manifest_version": 3, "name": "标签页读取工具", "version": "1.0", "permissions": ["tabs"] }
- 之后在扩展的上下文(后台服务、弹出页、选项页均可)中调用查询API即可拿到所有标签页的标题,示例JS代码:
// 传入currentWindow参数限定仅查询当前激活窗口的标签页 chrome.tabs.query({currentWindow: true}, (tabs) => { // 遍历tabs数组提取title字段就是标签页名称 const allTabNames = tabs.map(item => item.title) console.log("当前窗口所有标签页名称:", allTabNames) })
- 注意:该接口仅允许在扩展上下文调用,普通网页没有权限读取其他标签页信息。
场景2:桌面端应用读取系统浏览器的标签页
如果是做桌面端工具类项目,可直接调用系统原生接口实现:
- Windows端可以遍历系统顶层窗口,匹配浏览器进程的窗口标题,主流浏览器的窗口标题格式均为
[标签页名称] - [浏览器名称],拆分字符串即可提取标签页名称 - Mac端可以调用AppleScript脚本对接对应浏览器的内置接口获取,比如Safari的示例调用脚本:
tell application "Safari" to get name of tabs of front window
内容的提问来源于stack exchange,提问作者harsh raj
相关产品推荐
相关产品推荐

