当前位置: 首页 > 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.lryc.cn/news/626157.html

相关文章:

  • 【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
  • LLM(大语言模型)的工作原理 图文讲解
  • 网络间的通用语言TCP/IP-网络中的通用规则4
  • 大模型+RPA:如何用AI实现企业流程自动化的“降本增效”?
  • 基于SpringBoot+Vue的养老院管理系统的设计与实现 智能养老系统 养老架构管理 养老小程序
  • Linux系统部署python程序
  • SConscript 脚本入门教程
  • InfoNES模拟器HarmonyOS移植指南
  • Redis缓存加速测试数据交互:从前缀键清理到前沿性能革命
  • 图形化监控用数据动态刷新方法
  • Transformer入门到精通(附高清文档)
  • 内网后渗透攻击--隐藏通信隧道技术(压缩、上传,下载)
  • 常见的软件图片缩放,算法如何选择?
  • 【开源工具】基于社会工程学的智能密码字典生成器开发(附完整源码)
  • 字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent
  • 洛谷 P2834 纸币问题 3-普及-
  • Flink原理与实践 · 第三章总结
  • 第5.6节:awk字符串运算
  • 【驱动】RK3576:桌面操作系统基本概念
  • L2TP虚拟局域网
  • 快速傅里叶变换:数字信号处理的基石算法
  • Orange的运维学习日记--47.Ansible进阶之异步处理
  • 数据库-MYSQL配置下载
  • go链路追踪
  • 微算法科技(NASDAQ: MLGO)研究利用PBFT中的动态视图变换机制,实现区块链系统高效运转
  • 不同语言的并发模型对比:Go、Java与Python
  • Go高效复用对象:sync.Pool详解
  • 机器学习中的「损失函数」:模型优化的核心标尺
  • 决策树算法详解
  • 【完整源码+数据集+部署教程】鳄梨表面缺陷检测图像分割系统源码和数据集:改进yolo11-MLCA