当前位置:首页 > IT > 正文内容

谷歌浏览器开发初体验之manifest.json文件详解

admin5年前 (2019-08-30)IT1488

manifest.json是扩展的配置文件,指明了扩展的各种信息。

一个manifest.json格式如下:

{
    "manifest_version":2,//这是固定值
    "version":"1.0",//谷歌根据这里判断插件是否需要更新
    "name":"天眼",//插件名称
    "description":"信息查看",//插件描述
    
    //插件图标
    "icons":{
        "16":"imgs/icon-16.png",
        "128":"imgs/icon-128.png"
    },
    "browser_action":{
        "default_icon":{
            "19":"imgs/icon-19.png",
            "38":"imgs/icon-38.png"
        },
        "default_title":"天眼"//鼠标放上去显示的名称
    },
 
    //权限设置
    "permissions":[
        "notifications",
        "tabs",
        "webNavigation",
        "storage",
        "http://*/*",//表示该权限作用于任何网址
        "https://*/*"//表示该权限作用于任何网址
    ],
    "content_scripts":[
        {
            "all_frames":true,
            "js":[
                "jquery.js",
                "content.js"
            ],
            "matches":[
                "http://*/*",//表示该js作用于任何网址
                "https://*/*"//表示该js作用于任何网址
            ]
        }
    ]
}

注释:

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进行通信。

content_scripts格式如下:

"content_scripts": [{

      "matches": ["https://www.baidu.com/*"],

      "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之后,window.onload之前。

默认是document_idle,也就是content_scripts的js都罗列在web页面的js之后。

⑤   all_frames:boolean,可选。是否运行在页面所有的frame中。若为false,则只运行在最上层的frame中。默认为false。

⑥   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:扩展运行在独立的进程中。每个进程都只能看到自己的事件和消息,各进程间不能通信。

4.    permissions:扩展所需要的权限。permissions是一个String数组,每一个权限都使用String来表示。某些权限在安装前会告知用户。

特别注意permissions中若有不可识别的配置项,那么所有permissions配置项都会失效,即使其他的permissions配置项是正确的。

permissions部分常用值如下:

①   模式配匹:用于指定扩展会在哪些URL中生效。例如:

http://*/*:匹配任何http协议的URL。

*://*/*:匹配任何http/https协议的URL。

http://127.0.0.1/*:匹配任何本地请求URL。

https://www.baidu.com/*:匹配https://www.baidu.com/开头的所有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权限。例如,tabs.executeScript(向页面临时注入js并执行)和tabs.insertCSS(向页面临时注入css并执行),执行浏览器按钮,执行页面按钮,执行右键菜单项,通过命令API执行键盘快捷键等。

 ———————————————— 

版权声明:本文为CSDN博主「超频化石鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/fyyyr/article/details/80949965


扫描二维码推送至手机访问。

版权声明:本文由小龙的博客发布,如需转载请注明出处。

本文链接:https://xl.cndyun.com/post/479.html

“谷歌浏览器开发初体验之manifest.json文件详解” 的相关文章

云计算-窄带高清

标清视屏处理示例当前浏览器不能支持视频播放,请采用chrome或IE9以上浏览器当前浏览器不能支持视频播放,请采用chrome或IE9以上浏览器...

Linux软件源、内核升级方法

【CentOS 系列用户】1)yum clean all && yum makecache,更新软件源2)yum update kernel gblic -y,更新当前内核版本3)reboot,重启生效4)uname -r,检查当前版本是否为上述【安全版本】,如果是,则说明修复成功。...

Typecho 1.0 Nginx 提示access denied的解决办法。

使用Nginx驱动typecho,刚安装后可以看到首页却不能访问管理登录或伪静态页面,找了好多方法包括修改:/usr/local/php/etc/php-fpm.conf  在后面加上一行:security.limit_extensions = .php .asmx .html .js&n...

第三方团队公布适配安卓8.0列表,多达22个品牌,上百款机型

第三方团队公布适配安卓8.0列表,多达22个品牌,上百款机型

近日,谷歌官方的Andriod 8.0 已经开始推送给手机用户,开放系统源码后,第三方的Lineage 团队是 Android 第三方 ROM CyanogenMod 团队解散后的后继者。 Lineage 团队已经开始着手适配安卓8.0的工作,推出基于Oreo的新版本LineageOS 15.0。官...

升级优化公告20170906

2017年9月4日app上线取消了首页音乐自动缓存机制,减少流量损耗优化视频代码使视频可以自适应屏幕大小对视频网站链接做CDN HTTPS加速,同时添加视频防盗链实现视频播放可拖拽,高速访问...

升级优化公告20170916

优化首页常驻图片内容为webp格式大大加少了首页体积增加在线交流模块优化app开启速度麦兜H5网、麦兜生活圈入驻首页,加入app访问优化调整麦兜H5网适配app...