浏览器扩展MV3版本升级说明

因软件更新较快,部分文档内容与软件最新版本有所出入,请知悉。

MV3(Manifest V3)是浏览器扩展开发中的最新规范版本,它带来了诸多变化。Quicker的浏览器扩展也将升级为MV3版本。

注意:正在开发中,以下内容可能会变更。

带来的重要变更:

  • 不再支持“运行后台脚本”功能。 新增“运行后台命令”功能,封装了部分常用的chrome API,可用于实现部分原有后台脚本的相关需求。
  • 必须启用浏览器的“开发者模式”,才能使用本扩展的全部功能。(这是浏览器执行userScript动态脚本的基本要求。)
  • 需要Chrome135+版本。


Beta版本浏览器扩展

Beta版扩展安装网址:

https://chromewebstore.google.com/detail/quicker-connector-beta/pelcagafmpanmhhcjffhkefmehfglkhe


它在应用商店中是一个独立的扩展,在正式版更新后,Beta版扩展将被从商店移除。

在使用测试版扩展期间,请禁用原有0.7.4正式版本扩展。

移除功能:运行后台脚本

此功能不再被支持。MV3禁止了所有后台自定义脚本运行功能。

新增功能:运行后台命令


命令

  • 每个命令对应一个chrome API函数。
  • 命令名称的格式为api_namespace_method,如api_tabs_create,对应于 chrome.tabs.create方法。
  • chrome API方法通常以异步方式执行。
  • 请参考源码了解目前所支持的接口:网址
    • API封装,按命名空间分别保存在/src/background/api目录中的对应文件中。
    • 对每个方法进行封装,并export。
    • /src/background/background-commands.js文件的BG_COMMAND_HANDLERS词典中,定义了命令名称与实际封装方法的映射。
    • API方法通常以异步方式调用并返回结果。

命令参数

用于设定给chrome API方法传递的参数。

通常使用如下的规则:

情况一:命令参数直接传递给API

如果API方法接受的是1个参数,并且该参数为对象类型,则命令参数直接作为API方法的参数。

chrome.tabs.create() 方法,接收createProperties参数,它是一个对象参数,包含url,active,windowId等属性。此时,步骤参数即作为createProperties传递给 chrome.tabs.create()方法。

如,可以按如下格式设置命令参数(可选参数可根据需求省略):

{
 "url":"https://baidu.com"
}

情况二:命令参数封装了需要传递给API的参数。

有如下情况时,需要使用步骤参数封装API参数。步骤参数对象的每个属性,对应API方法的一个参数。属性名对应于参数名。

1)API方法需要多个参数。 如chrome.tabs.update(tabId, updateProperties)方法,接受2个参数。此时的命令参数示例:

{
  tabId: 5,
  updateProperties: {
    muted: true
  }
}

2)API方法需要一个参数,但此参数为简单的值类型,如数字、文本等,或数组类型。如chrome.tabs.get(tabId)方法,接受1个数字类型参数。 此时的命令参数示例:

{
  tabId: 102401
}

在必要时,可以为命令传递一个参数对象。

指定参数值的几种方法

1)直接传递json文本。

2)使用表达式创建匿名c#对象,如:

$= new {
  tabId = {数字变量},
  updateProperties = new {
    mute = true
  }
}


更改的功能

对标签页运行脚本

  • 改为使用 chrome.userScriptAPI实现。
  • 新增“执行环境”参数,可选“MAIN”在网页上下文中执行,访问网页自身的js上下文。
  • 新旧版本的浏览器扩展对于相同的脚本,可能存在返回结果不是特别一致的情况。


获取标签页信息

  • 增加返回Manifest版本功能。

动作开发考虑

如果需要同时兼容旧版扩展和新版扩展,可以先通过“获取标签页信息”操作得到Manifest版本,再根据Manifest版本,选择使用“运行后台脚本”(版本为2时)或“运行后台命令”(版本为3时)操作类型。


如何开启浏览器的开发者模式


反馈与讨论

暂无讨论
语雀在语雀上查看