Skip to content
0

Chrome插件开发基础

清单文件

manifest.json,主要根据里面的内容来介绍一些基本概念!

name

插件的名称

description

插件的描述信息

version

插件的版本号

manifest_version

目前统一为3

可选配置

icons

提供插件的不同尺寸的图标,用于不同的页面显示,比如插件管理页面用48x48的图标、工具栏页面使用16x16的图标,系统会根据情况尝试使用最佳尺寸。图标通常应采用 PNG 格式,因为 PNG 能够最好地支持透明度,也支持 BMP、GIF、ICO 和 JPEG。注意:不支持 WebP 和 SVG 文件。

建议提供: 128x128、48x48、16x16的图标。

示例:根路径为manifest.json所在目录,下同。

json
{
  "icons": {
    "16": "icon16.png",
    "32": "icon32.png",
    "48": "icon48.png",
    "128": "icon128.png"
  }
}

action

定义插件图标在工具栏中的外观和行为。

  • default_icon:插件在工具栏中默认显示的图标

  • default_title:鼠标在工具栏图标hover时显示的文字,比如这里是 "click me"

  • default_popup:点击图标后弹出的HTML页面,html文件不能运行内联js脚本,只能加载js文件

    示例:"popup.html"

    html
    <html>
      <body>
        <h1>Hello Extensions</h1>
        <script src="popup.js"></script>
      </body>
    </html>

background

指定包含扩展程序的Service Worker的js脚本。

  • service_worker:在后台处理并监听浏览器事件,还会响应扩展程序事件,如导航到新页面、点击通知或关闭标签页等。可使用所有chrome API,但是不能访问网页Dom

    示例:

    json
    {
        "background": {
          "service_worker": "background.js"
        }
    }

content_scripts

指定在用户打开某些网页时要使用的 JavaScript 或 CSS 文件。可以访问网页的Dom,因此可以修改网页内容。不能访问扩展页面(即点击插件图标所弹出的页面,如上为popup.html)的Dom,但是可以进行通信。

  • js:js文件列表
  • css:css文件列表
  • matches:必填,指定匹配的页面列表,即只针对匹配的页面进行Dom操作。

示例:

json
{
 "name": "My extension",
 "content_scripts": [
   {
     "matches": ["https://*.nytimes.com/*"],
     "css": ["my-styles.css"],
     "js": ["content-script.js"]
   }
 ]
}

options_ui

选项页面,通常为用户提供对插件的一些自定义设置。options_page只支持整页展示。可通过右键工具栏插件图标的菜单栏中的选项访问页面,或者在浏览器扩展程序管理中插件详情里面的扩展程序选项访问。

  • page:指定选项页面html文件
  • open_in_tab:为true表示新建一个tab标签页以整页形式展示,为false则以嵌入形式(弹窗)展示。弹窗并不是在当前页面弹窗,而是在扩展程序管理页面的插件详情中弹窗。

示例:

json
{
  "options_ui": {
        "page": "options.html",
        "open_in_tab": true
    }
}

permissions

允许使用特定的扩展程序 API。可用于告知用户此插件需要使用哪些权限等。

总结

入门比较重要的几个概念:

  • content_scripts:内容脚本,操作网页Dom
  • service_worker:后台脚本,不能操作网页Dom
  • popup页面:点击插件图标所弹出的页面

这三者之间是可以相互通信的。

注意

更新插件后,记得刷新页面!