LMLPHP后院

Chrome插件在高版本浏览器中安装报错解决技术

maybe yes 发表于 2014-12-17 17:20

去年过年前开发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.

上面的错误系插件版本过低,在高版本Chrome需要在manifest文件中添加 manifest_version 配置项。

按照上面的提示在清单文件中增加了 "manifest_version": 2 配置项,又出现如下错误:

"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 开发现在不热门,但是技多不压身,好文推荐给朋友了!
2024-03-28 16:31:24 1711614684 0.020138