当前位置: 首页 > news >正文

Chrome插件开发【windows】

目录

前言

windows方法

chrome.windows.create()

chrome.windows.getCurrent()

chrome.windows.get()

chrome.windows.getLastFocused()

chrome.windows.getAll()

chrome.windows.update()

chrome.windows.remove()

windows事件

chrome.windows.onCreated

chrome.windows.onRemoved

chrome.windows.onFocusChanged

chrome.windows.onBoundsChanged

window对象

其它


前言

本文基于Chrome插件V3版本讲解

chrome.windows API提供了与浏览器窗口交互的完整能力。

浏览器窗口浏览器标签页不是一个概念,简单来说:“一个窗口可以包含多个标签页

具体包括:

  • 创建窗口
  • 关闭窗口
  • 修改窗口
  • 查询窗口
  • 监听窗口

windows方法

所有方法的回调结果均支持:

  • 回调函数:callback
  • Promise:“.then”和“.catch

chrome.windows.create()

创建新的浏览器窗口

语法

// 创建新的浏览器窗口
chrome.windows.create(createData,(window) => {})
// 或
chrome.windows.create(createData).then().catch()

参数

  • createData必填):配置新窗口的属性
    • 类型:Object
    • 对象属性:
      • url:String | Array,窗口打开的URL | 窗口打开多个标签页多个URL
      • type:窗口类型,(normal | popup | panel | detached_panel),默认normal
      • left/top:窗口左上角坐标,单位PX
      • width/height:窗口宽高,单位整数
      • state:窗口大小,(normal | maximized | minimized | fullscreen),默认normal
      • incognito:布尔值,窗口处于“激活” | “未激活”状态
  • callback选填):callback只有一个参数(window)
    • window:新窗口对象

示例

// 创建一个带有两个浏览器标签的窗口
chrome.windows.create({url:['https://www.baidu.com','https://www.baidu.com'],type:'normal',
}).then(window => {console.log(window)
})

效果

chrome.windows.getCurrent()

获取当前窗口(调用该API扩展页面所在的窗口),如果是在background.js中调用:

返回插件发生“运行” | “更新” | “安装” | “卸载操作的窗口

语法

// 获取窗口
chrome.windows.getCurrent(getInfo,(window) => {})
// 或
chrome.windows.getCurrent(getInfo).then().catch()

参数

  • getInfo选填):配置获取信息
    • 类型:Object
    • getInfo参数:
      • populate:布尔值,若为true,返回的windows对象会包含tabs字段。否则,不包含tabs字段。tabs字段就是标签页数组
      • windowTypes:Array,筛选窗口类型,仅当窗口类型匹配数组中的值时才返回。(normal | popup | panel | detached_panel)
  • callback选填):callback只有一个参数(window
    • window:查询到的窗口对象

chrome.windows.get()

获取指定窗口ID窗口详情

语法

// 根据窗口ID获取窗口信息
chrome.windows.get(windId,getInfo,(window) => {})
// 或
chrome.windows.get(windId,getInfo).then((windowId) => {}).catch()

参数

  • windowId必填):窗口的ID
    • 类型:Number
  • getInfo选填):配置返回信息
    • 类型:Object
    • getInfo参数:
      • populate:布尔值,若为true,返回的windows对象会包含tabs字段。否则,不包含tabs字段。tabs字段就是标签页数组
      • windowTypes:Array,筛选窗口类型,仅当窗口类型匹配数组中的值时才返回。(normal | popup | panel | detached_panel)
  • callback选填):callback只有一个参数(window
    • window:查询到的窗口对象

示例

// 获取当前窗口的信息
// 就是绕了一个大弯,算是锻炼使用了
// 先获取当前窗口ID
chrome.windows.getCurrent((window) => {// 再查看当前窗口信息chrome.windows.get(window.id,(windowExtra) => {console.log(windowExtra);})
})

chrome.windows.getLastFocused()

获取最后获得焦点的窗口

语法

// 获取最后一个获得焦点的窗口
chrome.windows.getLastFocused(getInfo,(window) => {})

参数

  • getInfo选填):配置返回信息
    • 类型:Object
    • getInfo参数:
      • populate:布尔值,若为true,返回的windows对象会包含tabs字段。否则,不包含tabs字段。tabs字段就是标签页数组
      • windowTypes:Array,筛选窗口类型,仅当窗口类型匹配数组中的值时才返回。(normal | popup | panel | detached_panel)
  • callback选填):callback只有一个参数(window
    • window:查询到的窗口对象

chrome.windows.getAll()

获取所有窗口的列表

语法

// 获取所有窗口
chrome.windows.getAll(getInfo,(windows) => {})

参数

  • getInfo选填):配置返回信息
    • 类型:Object
    • getInfo参数:
      • populate:布尔值,若为true,返回的windows对象会包含tabs字段。否则,不包含tabs字段。tabs字段就是标签页数组
      • windowTypes:Array,筛选窗口类型,仅当窗口类型匹配数组中的值时才返回。(normal | popup | panel | detached_panel)
  • callback选填):callback只有一个参数(window
    • window:查询到的窗口对象

chrome.windows.update()

更新窗口的属性(大小、位置、状态

语法

// 更新窗口
chrome.windows.update(windowId,updateInfo,(window) => {})

参数

  • windowId必填):窗口ID
    • 类型:Number
  • updateInfo必填):更新内容
    • 类型:Object
    • updateInfo参数:
      • left:Number,窗口左上角的水平坐标(px),需配合top使用
      • top:Number,窗口左上角的垂直坐标(px),需配合left使用
      • width:Number,窗口宽度
      • height:Number,窗口高度
      • state:String,窗口状态(normal | maximized | minimized | fullscreen)
      • focused:布尔值,若为true,窗口获得焦点;反之
      • drawAttention:布尔值,若为true,会通过闪烁任务栏图标等方式提醒用户注意该窗口(部分平台不支持)
      • incognito:布尔值,仅对已隐藏窗口有效
  • callback选填):只有一个参数(window)
    • window:更新后的window对象

示例

// 更新窗口
chrome.windows.getCurrent((window) => {chrome.windows.update(window.id,{focused: true,drawAttention:true},(newWindow) => {console.log(newWindow)})
})

效果

任务栏图标真的有在闪烁!

chrome.windows.remove()

关闭指定窗口(包含窗口下的鄋标签页)

语法

// 删除窗口
chrome.windows.remove(windowId,(window) => {})

参数

  • windowId必填):窗口的ID
    • 类型:Number
  • callback选填):callback没有参数

windows事件

用于监听窗口的变化

chrome.windows.onCreated

监听窗口创建

语法

// 监听窗口创建
chrome.windows.onCreated.addListener(window => {})

参数

  • window:新创建的window对象

chrome.windows.onRemoved

监听窗口关闭

语法

// 监听窗口删除
chrome.windows.onRemoved.addListener((windowId) => {})

参数

  • windowId:关闭的window窗口ID

chrome.windows.onFocusChanged

监听窗口焦点

语法

// 监听窗口焦点
chrome.windows.onFocusChanged.addListener((windowId) => {})

参数

  • windowId:发生变化的窗口ID,如果所有窗口都没有焦点返回“-1

chrome.windows.onBoundsChanged

监听窗口位置或大小变化

语法

// 监听窗口删除
chrome.windows.onBoundsChanged.addListener((windowId, bounds) => {});

参数

  • windowId:变化窗口的ID
  • bounds:新的边界位置({left,top,width,height})

window对象

一个window对象有10个属性:

  • alwaysOnTop:布尔值,表示窗口是否开启“置顶”状态
  • focused:布尔值,表示窗口当前是否处于“获得焦点”状态
  • height:窗口的高度,单位是px
  • id:Number,窗口的唯一标识符
  • incognito:布尔值,表示窗口是否处于“隐身模式
  • left:窗口左上角相对于屏幕左侧的水平距离,单位是px
  • state:String,窗口的状态(normal | maximized | minimized | fullscreen)
  • top:窗口左上角相对于屏幕顶部的垂直距离,单位是px
  • type:String,窗口的类型(normal | popup)
  • width:窗口的宽度,单位是px

其它

更多Chrome插件学习,可以参考我的专栏:

Chrome插件_是洋洋a的博客-CSDN博客

http://www.dtcms.com/a/339612.html

相关文章:

  • Infusing fine-grained visual knowledge to Vision-Language Models
  • Kotlin 协程之Channel
  • Python脚本每天爬取微博热搜-升级版
  • 电商数据分析可视化预测系统
  • GPT-5论文写作全流程提示词库
  • 点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
  • 图像采集卡与工业相机:机器视觉“双剑合璧”的效能解析
  • spring事务(@Transactional)失效的情景及处理
  • RabbitMQ:SpringAMQP 多消费者绑定同一队列
  • shenyu网关与与nacos业务网关的定位
  • 源网荷储 + 微电网:1+1 如何大于 2?能源协同解决方案
  • c++日志宏 INFO(...)
  • Webpack 5 配置完全指南:从入门到精通
  • Docker镜像--镜像分层、UnionFS、镜像发布、私有库Registry
  • Java -- 用户线程和守护线程--线程同步机制
  • 大模型问题:幻觉分类+原因+各个训练阶段产生幻觉+幻觉的检测和评估基准
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|18th Aug. , 2025
  • 【GNSS定位原理及算法杂记6】​​​​​​PPP(精密单点定位)原理,RTK/PPK/PPP区别讨论
  • usb通信中工作模式:主机模式和设备模式
  • 2025年渗透测试面试题总结-21(题目+回答)
  • 水闸安全监测的主要核心内容
  • Java NIO 核心精讲(上):Channel、Buffer、Selector 详解与 ByteBuffer 完全指南
  • 数字政务安全实战:等保2.0下OA系统的身份认证与数据防护
  • 微软AD国产化替换倒计时——不是选择题,而是生存题
  • 三次握手四次挥手
  • 决策树算法详解
  • Orange的运维学习日记--47.Ansible进阶之异步处理
  • ESP32应用——HTTP client(ESP-IDF框架)
  • STM32之MCU和GPIO
  • AT_abc397_f [ABC397F] Variety Split Hard