chrome扩展:manifest.json文件详解

更新时间:2023-05-16 23:30:40 阅读: 评论:0

chrome扩展:manifest.json⽂件详解manifest.json是扩展的配置⽂件,指明了扩展的各种信息。
⼀个manifest.json格式如下:
{
// 必须的字段3个
"name": "MyExtension", // 扩展名称
"version": "1.0", // 版本。由1到4个整数构成。多个整数间⽤"."隔开
"manifest_version": 2, // manifest⽂件版本号。Chrome18开始必须为2
// 建议提供的字段3个
"description": "",  // 描述。132个字符以内
"icons": {
"16": "image/icon-16.png",
"48": "image/icon-48.png",
"128": "image/icon-128.png"
}, //扩展图标。推荐⼤⼩16,48,128
"default_locale": "en", // 国际化
// 以下字段多选⼀,或者都不提供
"browr_action": {
"default_icon": "image/icon-128.png",
"default_title": "My Test",
"default_popup": "html/browr.html"
区间英文
}, //地址栏右侧图标管理。含图标及弹出页⾯的设置等
"page_action": {
"default_icon": "image/icon-48.png",
"default_title": "My Test",
"default_popup": "html/page.html"
}, //地址栏最后附加图标。含图标及⾏为等
"theme": {}, // 主题,⽤于更改整个浏览器的外观
"app": {}, // 指定扩展需要跳转到的URL
// 根据需要提供
"background": {
"scripts": [
"lib/jquery-3.3.1.min.js",
"js/background.js"
]
,
"page":"html/background.html"
}, // 指定扩展进程的background运⾏环境
"chrome_url_overrides": {
"pageToOverride": "html/overrides.html"
}, //替换页⾯。详见注释1
"content_scripts": [{
"matches": ["/*"],
"css": ["css/mystyles.css"],
"js": ["lib/jquery-3.3.1.min.js", "js/content.js"]
}], // 指定在web页⾯运⾏的脚本。详见注释2
"content_curity_policy": "",  // 安全策略
"file_browr_handlers": [],
rear window"homepage_url": "xxx", // 扩展的官⽅主页
"incognito": "spanning", // 或"split"。详见注释3
"intents": {}, // ⽤户操作意图描述
"key": "", // 扩展唯⼀标识。不需要⼈为指定
"minimum_chrome_version": "1.0", // 扩展所需chrome的最⼩版本
"nacl_modules": [],  // 消息与本地处理模块映射
"offline_enabled": true, // 是否允许脱机运⾏
"omnibox": {
"keyword": "myKey"
}, //ominbox即地址栏。⽤于响应地址栏的输⼊事件
"options_page": "aFile.html", // 选项页。⽤于在扩展管理页⾯跳转到选项设置"permissions": [
organic food
"/*",japan life
"background",
"tabs"
], //权限。详见注释4
"plugins": [{
"path": "extension_plugin.dll",
"public": true
}], // 扩展。可调⽤第三⽅扩展
"requirements": {}, // 指定所需要的特殊技术。⽬前只⽀持"3D"
"update_url": "path/l",  // ⾃动升级
"web_accessible_resources": [] // 指定资源路径,为String数组
}
注释:
1.    chrome_url_overrides:替换页⾯。⽤于将原定显⽰的页⾯替换为⾃定义的页⾯。其取值有4个:
①  pageToOverride:页⾯。
②  bookmarks:书签。
③  history:历史。
④  newtab:新标签页。
2.    content_scripts:指定要向Web页⾯内注⼊的脚本。可注⼊多个css与js。
扩展本⾝的运⾏环境为background,⽽background与web页⾯的运⾏环境是相互独⽴的。若希望在扩展中对web页⾯进⾏修改,那就需要使⽤content_scripts。
content_scripts运⾏在⼀个隔离环境中,即与background和web页⾯运⾏环境都独⽴。但content_scripts共享了web页⾯的DOM,所以content_scripts可以对web页⾯DOM进⾏操作。然⽽共享仅限于DOM,不包括任何js变量与函数。同理,web页⾯的js也不能访问content_scripts中的js变量与函数。于是,⼆者引⼊的库也不能共享,各⾃使⽤各⾃的库。
借助事件的监听与触发,content_scripts可以与web页⾯的js进⾏通信。3年级英语上册
过去式练习content_scripts格式如下:
"content_scripts": [{
"matches": ["/*"],同人是什么意思
"css": ["mystyles.css"],
"js": ["lib/jquery-3.3.1.min.js", "js/content.js"],
"run_at": "document_idle"
英语语音语调
}],
其数组元素的字段有:
①  matches:String数组,必须。定义content_scripts对哪些页⾯⽣效。其规则符合permissions的模式匹配。
②  css:String数组,可选。定义哪些css⽂件在web页⾯DOM创建前注⼊到web页⾯中。
③  js:String数组,可选。定义哪些js⽂件注⼊到web页⾯中。其js⽂件的注⼊顺序与数组中定义的顺序相同。⾄于这些js与web页⾯中所定义js的顺序关系,取决于run_at字段。
④  run_at:String,可选。定义content_scripts的注⼊时机,从⽽影响到js与web页⾯所定义js的顺序关系。取值有:
·document_start:所有css加载完毕,但DOM尚未创建时。
·document_end:DOM创建完成,但图⽚及frame等⼦资源尚未加载时。
·document_idle:document_end之后,load之前。
默认是document_idle,也就是content_scripts的js都罗列在web页⾯的js之后。
⑤  all_frames:boolean,可选。是否运⾏在页⾯所有的frame中。若为fal,则只运⾏在最上层的frame中。默认为fal。
北外培训学院⑥  include_globs:String数组,可选。⽤于规定页⾯匹配的⽩名单。⼀个URL,必须同时满⾜:匹配matches,匹配include_globs⽩名单,不匹配exclude_globs⿊名单这三个条件才可以。注意include_globs和exclude_globs中的匹配语法与permissions和matches所⽤的匹配模式不同。
⑦  exclude_globs:String数组,可选。⽤于规定页⾯匹配的⿊名单。同⑥。
3.    incognito:取值为:”spanning”/“split”。指定当浏览器处于隐⾝模式下时,扩展如何响应。默认为”spanning”。
①  spanning:扩展会运⾏在共享进程中。标签页的事件和消息会发送给这个进程,来源通过incognito标志区分。
②  split:扩展运⾏在独⽴的进程中。每个进程都只能看到⾃⼰的事件和消息,各进程间不能通信。bitchy
4.    permissions:扩展所需要的权限。permissions是⼀个String数组,每⼀个权限都使⽤String来表⽰。某些权限在安装前会告知⽤户。
特别注意permissions中若有不可识别的配置项,那么所有permissions配置项都会失效,即使其他的permissions配置项是正确的。
permissions部分常⽤值如下:
①  模式配匹:⽤于指定扩展会在哪些URL中⽣效。例如:
*://*/*:匹配任何http/https协议的URL。
<all_urls>:匹配所有url。
使⽤模式匹配时,直接将匹配规则字符串添加到permissions即可。
可添加多个匹配规则字符串,匹配效果是这些规则的并集。
若不添加匹配规则字符串,则默认对所有URL⽣效。
②  background:启⽤扩展后端环境。即在浏览器运⾏期始终运⾏,与单个页⾯⽆关。可以在这⾥调⽤浏览器的API,通常在这⾥进⾏扩展主要逻辑的开发。配合manifest.json的background字段使⽤。
③  bookmarks:启⽤书签权限。
④  contextMenus:启⽤右键菜单权限。可针对不同⽂档单独定制。
⑤  cookies:启⽤cookies权限。
⑥  experimental:启⽤chrome的实验功能API。
⑦  geolocation:允许扩展使⽤HTML5的地理位置API,⽆论⽤户是否有该权限。
⑧  history:启⽤history权限。
⑨  idle:启⽤延迟加载。
⑩  management:启⽤管理权限。⽤于管理已安装和正在运⾏的扩展。
notifications:启⽤桌⾯通知权限。不同平台下表现不同,但往往都是⼀个⼩弹窗。
tabs:启⽤标签权限。⽤于管理chrome浏览器的标签栏,例如创建,修改,重新排列标签等,以及修改chrome窗体。
实际上,⼤部分的chrome.tabs.API不需要任何权限就可以使⽤。tab的url、title和favIconUrl属性必须具有tabs权限才可以使⽤;tabs.captureVisibleTab必须有<all_urls>或activeTab权限才能使⽤。
activeTab:启⽤活动标签权限。通常来说,tabs更多是⽤于操作tab标签和窗体属性的。对那些可以与当前web页⾯交互的API,往往都需要activeTab权限。例如,uteScript(向页⾯临时注⼊js并执⾏)和tabs.inrtCSS(向页⾯临时注⼊css并执⾏),执⾏浏览器按钮,执⾏页⾯按钮,执⾏右键菜单项,通过命令API执⾏键盘快捷键等。

本文发布于:2023-05-16 23:30:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/660170.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:扩展   权限   匹配   标签   需要   进程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图