Chrome扩展的核心:manifest 文件(下)

这篇具有很好参考价值的文章主要介绍了Chrome扩展的核心:manifest 文件(下)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是 dom 哥。这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星。

在上篇和中篇中已经完成了对 manifest 文件中以下字段的解释:

  • "manifest_version"
  • "name"
  • "version"
  • "description"
  • "icons"
  • "content_scripts"
  • "background"
  • "permissions"

本篇接着说剩下的 manifest 可选字段。

UI 配置

"action"

定义 Chrome 右上角工具栏上扩展 icon 按钮的 UI 和行为

"action": {
  "default_popup": "popup/index.html",  // optional
  "default_title": "Click Me",    // optional, shown in tooltip
  "default_icon": {               // optional
    "16": "images/icon16.png",    // optional
    "24": "images/icon24.png",    // optional
    "32": "images/icon32.png"     // optional
  }
},
  • default_popup:当用户点击右上角扩展按钮时展示的弹窗。是一个普通的 html 文件。弹窗的大小被限制在 25x25 至 800x600 之间。
    在 crx-demo 根目录下新建一个 html 文件 popup/index.html

    <!DOCTYPE html>
    <html>
      <head> </head>
      <body style="min-width: 300px;min-height: 400px;">
        <img src="../icon128.png" />
        <h1>crx-demo1</h1>
      </body>
    </html>
    

    更新 manifest.json 文件

    + "action": {
    +   "default_popup": "popup/index.html"
    + }
    

    在 chrome://extensions 更新以下扩展,就能看到效果啦

    Chrome扩展的核心:manifest 文件(下)

  • default_title:鼠标悬浮在扩展按钮上展现的 tooltip。

  • default_icon:设置扩展按钮的图标,如果不设置的话,默认是用 "icons" 里面设置的图标。

    这是我设置了 default_titledefault_icon 之后的效果:

    Chrome扩展的核心:manifest 文件(下)

"devtools_page"

在 Chrome DevTools 开发者工具中增加一个新的面板。像 Vue.js devtools 和 React Developer Tools 这两个扩展都是 devtools_page。

"devtools_page": "devtools/index.html"

在每次开发者工具打开时 devtools_page 配置的 html 都将以 iframe 的形式加载。但注意,devtools_page 配置的 html 并不会展现在 DevTools 的 UI 界面。它的主要作用是用于加载所需要的 JavaScript 文件。

设置 devtools/index.html 的内容如下:

<script src="./index.js"></script>

没错!什么也不需要,只需要一个 script 标签!

从下图可以看出,装载 devtools_page 的 iframe 被设置了 display: none

Chrome扩展的核心:manifest 文件(下)

需要在 devtools/index.js 里调用 chrome.devtools.* API 来创建 DevTools 面板:

chrome.devtools.panels.create("My Devtools Panel", "", "devtools/panel.html")

没错!就这一行!此时 crx-demo/devtools 目录的结构如下:

devtools
├── index.html
├── index.js
└── panel.html

有必要说说 chrome.devtools.panels.create 的参数,

chrome.devtools.panels.create(title, iconPath, pagePath)
  • title: DevTools 工具栏上展示的名字,类似 Elements,Console,Network,Application 这些。

  • iconPath:title 左边配置一个小 icon,但但但!实际上 Chrome 会忽略这个参数! 也就是根本设置不了小 icon,这个参数是废的,写死空字符串忽略就行啦。

  • pagePath:这个才是真正的 DevTools 面板要显示的 HTML 页面,值得注意的是,这个路径是相对于扩展根目录的。它将以 iframe 的形式加载,如下图所示:

    Chrome扩展的核心:manifest 文件(下)

"side_panel"

在 Chrome 侧边栏配置一个新的页面。侧边栏是浏览器级别的,常驻右侧。

Chrome扩展的核心:manifest 文件(下)

值得注意的是,要求在 "permissions" 声明 sidePanel 权限

"permissions": [
  "sidePanel"
]
"side_panel": {
  "default_path": "side_panel/index.html"
}

side_panel 页面里可以使用所有 chrome.* API,尽情驰骋吧~

"options_page"

配置一个扩展选项页,供用户自定义扩展的功能选项

"options_page": "options_page/index.html"

配置完之后会多出来两个入口,一个是右上角 action 按钮右键里的选项:

Chrome扩展的核心:manifest 文件(下)

另一个是扩展详情页里的扩展程序选项:

Chrome扩展的核心:manifest 文件(下)

点击之后实际上就是新开一个浏览器页面打开扩展里的静态页面:

Chrome扩展的核心:manifest 文件(下)

"chrome_url_overrides"

重写一些默认的 Chrome 页面

"chrome_url_overrides" : {
  "PAGE_TO_OVERRIDE": "myPage.html"
}

PAGE_TO_OVERRIDE 的取值须为下列之一,也是目前支持重写的页面:

  • newtab:新标签页。即 chrome://newtab

    Chrome扩展的核心:manifest 文件(下)

  • history:浏览历史记录页面。即 chrome://history

    Chrome扩展的核心:manifest 文件(下)

  • bookmarks:书签管理页面。即 chrome://bookmarks

    Chrome扩展的核心:manifest 文件(下)

值得注意的是,一个扩展只允许重写一个页面,不能重写多个页面!

其他可选项

"declarative_net_request"

拦截和修改网络请求。 不同于 manifest V2 编程式的操作处理,V3 规定必须使用声明式的静态规则进行配置。

"commands"

定义全局快捷键。需要在 background service-worker 中监听并自定义处理逻辑。

chrome.commands.onCommand.addListener((command) => {
  console.log(`Command: ${command}`)
})

"web_accessible_resources"

声明扩展里可以被外部 Web 页面或其他扩展访问的资源。默认情况下扩展里的所有资源,包括 img,html,js,css 都不允许被外部访问,这是为了安全而刻意设计的。

"homepage_url"

指定关于该扩展的主页。默认是指向 Chrome 应用商店,当你的扩展没放到 Chrome 应用商店,而是放在自己的网站上时可以用这个字段指明。
入口在扩展的详情页,如下图所示:

Chrome扩展的核心:manifest 文件(下)

"author"

指明扩展的作者

"author": {
  "email": "user@example.com"
}

值得注意的是,当往 Chrome 应用商店发布时,manifest.json 里指定的 author.email 地址必须和发布账户的一样!

总结

本篇介绍了 manifest.json 里剩余的一些可配置项:

  • "action"
  • "devtools_page"
  • "side_panel"
  • "options_page"
  • "chrome_url_overrides"
  • "declarative_net_request"
  • "commands"
  • "web_accessible_resources"
  • "homepage_url"
  • "author"

至此,Chrome 扩展 manifest 里常用的配置项全部介绍整理完毕。

文中涉及的 crx-demo 项目代码已放在 GitHub。

觉得不错可以 点个小星星 支持一下 🌹文章来源地址https://www.toymoban.com/news/detail-760036.html

到了这里,关于Chrome扩展的核心:manifest 文件(下)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Chrome 浏览器 Manifest V3 版本中 scripting API 解析

    Chrome 浏览器 Manifest V3 版本中 scripting API 解析 使用  chrome.scripting API 在不同上下文中执行脚本。 可以使用  chrome.scripting API 将 JavaScript 和 CSS 注入网站。 scripting 使用  chrome.scripting API ,需要在 manifest.json 中声明  scripting  权限,以及要向其注入脚本的网页的主机权限。使

    2024年01月19日
    浏览(53)
  • Chrome 插件 V3 版本 Manifest.json 中的内容脚本(Content Scripts)解析

    指定在用户打开某些网页时要使用的 JavaScript 或 CSS 文件。 内容脚本是在网页环境中运行的文件。通过使用标准文档对象模型 ( DOM ),开发者能够读取浏览器所访问网页的详情、更改这些网页,并将信息传递给其父级扩展程序。 内容脚本在声明扩展程序文件为可通过网络访问

    2024年01月19日
    浏览(39)
  • chrome extensions插件declarativeNetRequest修改user-agent方法manifest v3版

    有能力的可以看官方文档:https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#manifest 有一个需求,想通过插件的方式,修改请求头里面的user-agent,比如修改为iphone的头: 原本浏览器的请求头是: 通过查询发现,v2版本修改请求头的方式为:但是这种方式已经被废弃

    2024年02月01日
    浏览(101)
  • Chrome 浏览器插件从 Manifest V2 升级到 V3 版本所需要修改的点

    Chrome 浏览器官方已经给出确定的时间来弃用 V2 版本的插件了。 最早从 2024 年 6 月 的 Chrome 127 开始,我们将开始停用 Chrome 的不稳定版本(开发者版、 Canary 版和 Beta 版)中的 Manifest V2 扩展程序。受此变化影响的用户会在浏览器中看到 Manifest V2 扩展程序自动停用,并且无法再

    2024年01月16日
    浏览(48)
  • Chrome扩展之通信

    js类型 介绍 popup 单击插件图标后的弹窗中的js,由于单击图标打开popup,焦点离开又立即关闭,生命周期一般很短。 content-script 与页面共享DOM,但是不共享JS,可访问部分chrome扩展API。 background 权限最高,几乎可调用所有Chrome扩展API(除了devTools),且可以无限制跨域。生命周

    2024年01月23日
    浏览(34)
  • Chrome扩展开发系列开篇

    大家好,我是 dom 哥。这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星。 研究机构 Statcounter 发布了 2023 年 9 月报告,揭示了有关浏览器的最新统计数据。 浏览器 市场份额 Chromium-based? Chrome 63.56% Yes Safari 19.85% No Edge 5.43% Yes Firefox 2.94% No Opera ... Yes 可以看到基

    2024年02月04日
    浏览(50)
  • 从零实现的Chrome扩展

    Chrome 扩展是一种可以在 Chrome 浏览器中添加新功能和修改浏览器行为的软件程序,例如我们常用的 TamperMonkey 、 Proxy SwitchyOmega 、 AdGuard 等等,这些拓展都是可以通过 WebExtensions API 来修改、增强浏览器的能力,用来提供一些浏览器本体没有的功能,从而实现一些有趣的事情。

    2024年02月17日
    浏览(44)
  • Chrome扩展开发实战:快速填充表单

    大家好,我是 dom 哥。我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星 。 填表单是打工人经常面对的场景,作为一个前端,我经常开发一些PC端的页面,它们主要由表单和表格构成,而输入框又是表单里最常见的表单项。 接下来就试着做一个简单的小扩展

    2024年02月04日
    浏览(47)
  • chrome 扩展 popup 弹窗的使用

    popup介绍 popup 是点击 browser_action 或者 page_action 图标时打开的一个小窗口网页,焦点离开网页就立即关闭,一般用来做一些临时性的交互。 popup配置 V3版本中(V2版本是在 browser_action 中 ),可以通过配置文件( manifest.json )中 action 里面的 default_popup 字段来指定 popup 页面,也

    2024年02月05日
    浏览(42)
  • chrome扩展控制popup页面动态切换

    下面在mv2版本的API下完成 实际上通过控制页面元素实现popup页面切换,是一种伪切换,从视觉上达到了切换效果,实际上还是一个popup.html popup.html示例 判断展示哪一个div的内容 不需要在manifest里单独配置browser_action,通过所在的页面决定使用哪一个popup.html页面 准备两个popu

    2024年02月15日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包