chrome插件开发之API解析-chrome.tabs.query

ops/2025/3/26 1:15:34/

chrome.tabs.query 是 Chrome 扩展开发中用于查询浏览器标签页信息的 API。它允许你根据指定的条件获取当前浏览器中所有匹配的标签页。这个 API 返回一个 Promise,解析后会得到一个包含匹配标签页信息的数组。

常见用途

  1. 获取当前活动标签页:可以获取当前用户正在查看的标签页信息。
  2. 根据 URL 查询标签页:可以查找具有特定 URL 的标签页。
  3. 获取所有标签页:可以获取浏览器中所有打开的标签页信息。
  4. 根据标题或其他属性查询标签页:可以基于标签页的标题或其他属性进行查询。

基本语法

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);
});

注意事项

  1. 权限:使用 chrome.tabs.query 需要在 manifest.json 中声明 "tabs" 权限。
    {"permissions": ["tabs"]
    }
    
  2. 异步操作chrome.tabs.query 是一个异步操作,需要处理回调或使用 async/await
  3. 查询条件:可以组合多个查询条件来精确匹配标签页。

通过合理使用 chrome.tabs.query,你可以实现许多有用的功能,比如获取用户当前浏览的页面信息、查找特定页面等。


http://www.ppmy.cn/ops/169801.html

相关文章

LeetCode hot 100 每日一题(15)——48.旋转图像

这是一道难度为中等的题目,让我们来看看题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 提示…

“张江引擎 人形启程”,AI 机器人开启上海进化新范式

当AI从虚拟算法跃入物理世界,机器人正以技术攻关、产品迭代、场景落地为着力点,为上海塑造现代化产业体系提供重要支撑。 在张江机器人谷这片创新热土上,青龙机械臂在产线精准起舞,开普勒物流机器人走出仓库化身“物流小哥”&…

Jupyter Notebook 常用命令(自用)

最近有点忘记了一些常见命令,这里就记录一下,懒得找了。 文章目录 一、文件操作命令1. %cd 工作目录2. %pwd 显示路径3. !ls 列出文件4. !cp 复制文件5. !mv 移动或重命名6. !rm 删除 二、代码调试1. %time 时间2. %timeit 平均时长3. %debug 调试4. %ru…

计算机网络 第一章:计算机网络和因特网(2)

1.4 分组交换网中的时延、丢包和吞吐量 1.4.1 分组交换网中的时延概述 分组从一台主机(源)出发,通过一系列路由器传输,在另一台主机(目的地)中结束它的历程。当分组从一个节点(主机或路由器&…

提取关键 CSS: react 的项目中如何使用criticalCSS

在 React 项目中优化首屏加载性能时,Critical CSS(关键 CSS)是一项重要技术。以下是详细步骤和实现方法: 一、Critical CSS 的作用 首屏优化:提取渲染首屏内容所需的最小 CSS,内联到 HTML 中,减…

C++:背包问题习题

1. 货币系统 1371. 货币系统 - AcWing题库 给定 V 种货币(单位:元),每种货币使用的次数不限。 不同种类的货币,面值可能是相同的。 现在,要你用这 V 种货币凑出 N 元钱,请问共有多少种不同的…

Python----计算机视觉处理(Opencv:绘制图像轮廓:寻找轮廓,findContours()函数)

一、轮廓 轮廓是图像中目标物体或区域的外部边界线或边界区域,由一系列相连的像素构成封闭形状,代表了物体的基本外形。与边缘不同,轮廓是连续的,而边缘则不一定是连续的。 轮廓与边缘的区别: 轮廓是一组连续的点或线…

Android Compose 基础布局之 Box 和 Stack 源码深度剖析(九)

Android Compose 基础布局之 Box 和 Stack 源码深度剖析 一、引言 1.1 Android 开发中布局的重要性 在 Android 应用开发里,布局是构建用户界面(UI)的关键环节。良好的布局设计能够提升用户体验,使应用界面更加美观、易用且具有…