Chrome Extension的manifest.json文件

近期看到隔壁组开发写了一个Chrome扩展来提升Agile Planning的效率,动了也想鼓捣鼓捣的心思。然后上网百度(确实有点low了)一些资料来研究Chrome扩展具体是个啥东西~

主要参考资料来自于图灵社区的开源电子书籍:《Chrome扩展及应用开发》。感谢作者Sneezry和图灵社区的工作。其他的资料建议直接参考Google的官方文档:https://developer.chrome.com/extensions/getstarted  当然Google的东西还是需要自备梯子的,不方便使用梯子的看上面那本书来入个门应该够了。

Chrome扩展以及应用简单来说就是一系列文件的集合,这些文件包括HTML,CSS,JavaScript,图片以及manifest.json等。都是使用前端的技术开发,对于前端熟悉的同学在搞清楚基本结构和API之后应该可以轻松搞定。对于我这样的初级菜鸟来说,可以借这个机会结合实践来学习前端的知识。

扩展和应用是很像的东西,两者有很多共享的属性定义。扩展只能运行在Chrome内部,需要先运行Chrome再运行扩展。应用则可以直接调用Blink内核来独立工作。

在组成扩展或应用的一系列文件中,manifest.json是一个必备且必须叫这个名字的文件。这个文件是Chrome读取扩展/应用的入口,浏览器根据此文件来进行扩展的渲染。文件内容是按照一定格式描述的扩展/应用的相关信息,如扩展名称、版本、更新地址、请求的权限、扩展的UI界面入口等等。从文件的“扩展名”就可以看出,文件使用的是json格式来保存的信息,关于json格式的语法请自行百度~(很简单的)。

manifest中的大部分属性对于扩展和应用来说是共用的,个别的只能适用于其中一种,不能同时出现在同一个manifest文件中。

Chrome扩展的manifest必须包含:name, version, manifest_version

Chrome应用的manifest必须包含:name, version, manifest_version, app

其中manifest_version属性的值现在只能是2

其他常用可选属性有:browser_action, page_action, background, permission, options_page, content_scripts.

至此其实可以开始写一个很简单extension练手(例子来自上面那本书)。

目标是完成一个扩展,点击之后可以显示当前的时间。

首先是manifest.json文件

{
	"manifest_version": 2,
	"name": "我的时钟",
	"version": "0.0.1.0",
	"description": "First Chrome Extension",
	"browser_action":{
		"default_title": "My Clcok",
		"default_popup": "popup.html"
	}
}

 在上面的文件中,我们可以看到name属性定义了扩展的名称。description属性我们可以自己写一些对扩展的描述。version属性则定义了改扩展现在的版本,它最多可以有三个.分隔的四段数字组成,每段数字不超过65535且不能以0开头,但是可以为0. 如果扩展后续进行更新的话,新版本号必须比旧版本号高,比较顺序则从左向右分段比较。以上三个信息都将在扩展安装之后显示在Chrome的extension management页面。

browser_action属性指定扩展在浏览器中的行为。default_title为鼠标悬停在扩展图标上时显示的文字信息,default_popup是一个html文件地址,是指定扩展被点击后所显示的页面文件位置。

在看懂manifest中各个都是干嘛的之后,自然就该开始写那个popup.html

<html>
<head>
<style type="text/css">
* {
	margin: 0;
	padding: 0;
}

body {
	width: 200px;
	height: 100px;
}

div {
	line-height: 100px;
	font-size: 42px;
	font: Ariel;
	text-align: center;
}
</style>
</head>
<body>
<div id="clock_div"></div>
<script src="./my_clock.js"></script>
</body>
</html>

 由于我们所显示的并不是一个完整HTML页面,所以其中省略了很多标准的tag,当然写出来也没问题,只是没啥用而已。另外值得注意的是其中通过script标签引用了一个外部的js文件。这是由于Chrome并不允许在HTML中直接嵌入JavaScript代码,inline-script也是被禁止的。所以引入外部js文件来实现事件以及元素与事件的绑定。

so……接下就需要实现那个my_clock.js

function my_clock(el){
	var today = new Date();
	var h = today.getHours();
	var m = today.getMinutes();
	var s = today.getSeconds();
	m = m>10?m:('0'+m);
	s = s>10?s:('0'+s);
	el.innerHTML = h +":"+m+":"+s;
	setTimeout(function(){my_clock(el)},1000);
}

var clock_div = document.getElementById('clock_div');
my_clock(clock_div);

当当~~当~到此一个简单的显示时间的扩展就完成,将其加载到Chrome之中就可以看效果啦~(怎么加载?嘿嘿,你猜~~or百度一下?)

相关推荐