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
接下来,我们来编写一个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还未创建之前。