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

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.xdnf.cn/news/18227.html

相关文章:

  • MyCAT2的主从配置
  • 数据仓库OLTPOLAP维度讲解
  • Spring Cache 整合 Redis 实现高效缓存
  • 数字政务安全实战:等保2.0下OA系统的身份认证与数据防护
  • Mentalab Hypersync高精度无线同步系统:以亚毫秒级助力ExG多模态数据整合
  • 清空 github 仓库的历史提交记录(创建新分支)
  • django生成迁移文件,执行生成到数据库
  • STM32-FreeRTOS快速入门指南(中)
  • 8.19笔记
  • 自建知识库,向量数据库 (十)之 文本向量化——仙盟创梦IDE
  • 在CentOS系统中查询已删除但仍占用磁盘空间的文件
  • 仲裁器设计(三)-- Weighted Round Robin 权重轮询调度
  • 海滨浴场应急广播:守护碧海蓝天的安全防线
  • 私有化部署全攻略:开源大模型本地化改造的性能与安全深度评测
  • 【iOS】内存管理
  • 【git】 撤销revert一次commit中的某几个文件
  • SpringAIAlibaba之基础功能和基础类源码解析(2)
  • AC 应用控制技术
  • cursor快速了解项目结构-自己用
  • 读《精益数据分析》:营收(Revenue)—— 设计可持续盈利模式
  • 网络通信基础:从数据链路层到传输层
  • 用 C++ 构建高性能测试框架:从原型到生产实战指南
  • cursor+mcp-clickhouse进行数据分析
  • 无人机/航测/三维建模领域常见的“航线规划或建模方式
  • 【CPP】一个CPP的Library(libXXXcore)和测试程序XXX_main的Demo
  • 深入解析:Unity、Unreal Engine与Godot引擎中的Uniform变量管理
  • 易基因:常见生信分析图细节解析(第一期)
  • 通信方式:命名管道
  • 【科研绘图系列】R语言绘制多种小提琴和云雨图
  • Redisson 分布式锁核心机制解析