Chrome插件在高版本浏览器中安装报错解决技术
Could not load extension from 'G:\...'. The manifest_version key must be present and set to 2 (without quotes). See developer.chrome.com/extensions/manifestVersion.html for details.
"manifest_version": 2, 尝试安装此扩展程序时出现以下警告: 'background_page' requires manifest version of 1 or lower. Permission 'http://*' is unknown or URL pattern is malformed. Permission 'https://*' is unknown or URL pattern is malformed.
上面的信息告诉我们,"background_page" 配置项必须在 manifest version 1 或以下版本;"Permission" 配置项里面的 'http://*' 和 'https://*' 是一个未知的或者该URL模式是畸形的。于是去除上面的配置项。
然后又出现问题了,Popup页面不能展示。在网上找了下资料,发现 manifest version 2 的 "browser_action" 配置项做了修改,名字由 "popup" 改为 "default_popup"。修改后问题解决。但是又出现了另外的问题,popup页面JS运行错误,所有功能都失效了。报错内容如下:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:".
在网上找了下原因,是因为在 manifest version 2 里面不允许在 POPUP 页面写 JavaScript 脚本,脚本必须引用外部JS文件。于是将页面中的JS移动到外部文件后引用,最后问题解决。[引]Chrome扩展页面动态绑定JS事件提示错误,开发Chrome扩展时,页面的popup.html中需要js的时候,直接将JS写在动态绑定JS事件会提示错误。
下面附上 manifest 文件老版本和新版本的不同配置:
manifest version 1 or lower : { "name": "抢票插件第二代", //程序名称 "version": "1.0", //版本信息 "description": "快速抢票", //程序描述 "background_page": "background.html", //这个html页面用来保存插件的主要逻辑 "permissions": [ //权限设置,用来定义所需的网络信息,实现跨越 "tabs", "http://*", "https://*", "notifications" ], "browser_action": { //浏览器行为 "default_icon": "icon.png", //在浏览器上的小图标 "popup": "popup.html" //点击上面的小图标后弹出的那个小窗口页面 }, "content_scripts": [ { "matches": ["*://kyfw.12306.cn/otn/confirmPassenger/initDc*", "*://kyfw.12306.cn/otn/leftTicket/init*"], "js": ["Lib/jquery.min.js", "12306autoselected.user.js"], "run_at": "document_end" } ] } manifest version 2: { "name": "抢票插件第二代", //程序名称 "version": "1.0", //版本信息 "manifest_version": 2, "description": "快速抢票", //程序描述 // "background_page": "background.html", //这个html页面用来保存插件的主要逻辑 "permissions": [ //权限设置,用来定义所需的网络信息,实现跨越 "tabs", "notifications" ], "browser_action": { //浏览器行为 "default_icon": "icon.png", //在浏览器上的小图标 "default_popup": "popup.html" //点击上面的小图标后弹出的那个小窗口页面 }, "content_scripts": [ { "matches": ["*://kyfw.12306.cn/otn/confirmPassenger/initDc*", "*://kyfw.12306.cn/otn/leftTicket/init*"], "js": ["Lib/jquery.min.js", "12306autoselected.user.js"], "run_at": "document_end" } ] }
相关文章
余同学的开发之路
感谢大神的分享,我也遇到了这样的问题,现在已经解决,虽然 chrome 开发现在不热门,但是技多不压身,好文推荐给朋友了!