Skip to content

Latest commit

 

History

History
77 lines (71 loc) · 2.17 KB

2.1Chrome拓展开发之manifest.json.md

File metadata and controls

77 lines (71 loc) · 2.17 KB

Chrome拓展开发之manifest.json

manifest.json是必须存在的,它用来配置所有和插件相关的参数。用Chrome拓展可以帮助我们完成一些Hook工作,而且可以用来做填表工具。

常用参数

  • name 拓展的名字,必须是字符串类型
  • version 字符串类型,是当前的版本号,位于0-65535之间
  • description 拓展的介绍信息
  • permissions 是一个String数组,每一个权限都使用String来表示。某些关键权限在安装前会告知用户
    • cookies 启动cookies权限
    • tabs 启动管理Chrome浏览器标签栏权限
    • activeTab 启动与当前页面交互的API权限
    • contextMenus 启动右键菜单权限
    • history 启动历史记录权限
    • storage 启动本地存储数据权限
    • debugger 启动使用debugger工具权限
    • background 启动拓展后端环境
  • browser_action 浏览器的右上角显示
    • default_title 鼠标移入,显示简短描述
    • default_popup 鼠标点击,弹出的显示内容
    • default_icon 右上角拓展图标
  • background 常驻后台脚本
    • scripts 后台常驻,直到关闭浏览器一直执行的脚本
    • popup 调试页面
    • persistent 持久运行
  • content_scripts 向页面注入脚本
    • matches 匹配网址的正则列表
    • run_at 选择注入JS的时机
      • document_start:所有css加载完毕,但DOM尚未创建时
      • document_end:DOM创建完成,但图片及frame等子资源尚未加载时
      • document_idle:document_end之后,window.onload之前
    • js 需要注入的脚本文件列表
    • all_frames 是否运行在页面所有的frame中
  • commands 使用命令 API 添加快捷键,并为它们绑定默认的组合键
    • attach-debugger 命令名
    • suggested_key 设置组合键
    • description 命令描述
  • manifest_version manifest文件版本号。Chrome18开始必须为2

manifest编写

接下来,我们来编写一个manfest

{
  "name": "测试",
  "version": "2.0.0",
  "description": "测试",
  "permissions": ["storage", "activeTab", "tabs", "debugger", "storage"],
  "browser_action": {
    "default_popup": "popup.html"
  },
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "run_at": "document_start",
      "js": ["inject.js"],
      "all_frames": true
    }
  ],
  "commands": {
    "attach-debugger": {
      "suggested_key": {
        "default": "Alt+Shift+D"
      },
      "description": "Attach"
    }
  },
  "manifest_version": 2
}

其中关键的JS代码注入时机是在document_start,也就是DOM还未创建之前。