转载:http://ux.sohu.com/topics/5028aa0d88ba205052000407
引子: Google Chrome,又称Google浏览器,是一个由Google(谷歌)公司开发的开放原始码网页浏览器。 该浏览器是基于其他开放原始码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。 软件的名称是来自于称作Chrome的网路浏览器图形使用者界面(GUI)。 软件的beta测试版本在2008年9月2日发布,提供43种语言版本,有支持Windows平台、Mac OS X和Linux版本提供下载。 2012年8月6日,Chrome已达全球份额的34%,成使用最广浏览器。
Chrome插件的本质就是一个由 manifest.json 文件和插件所需要的图片,css,html,js资源组成的一个web页面,只是和传统的web页面不同的,它是以chrome浏览器为宿主运行的一个web程序。
本文将教会大家为流行的Chrome制作一个简易的浏览器插件,作为大家chrome插件入门的第一课。
首先新建一个文件夹来存放我们的chrome插件资源(图片,js,css,html)。在这个新建的文件夹里创建一个新文件,并修改文件名为 manifest.json 。打开新建的这个manifest.json 文件,敲入以下代码:
<ol class="linenums" style="padding: 0px; margin: 0px 0px 0px 33px; list-style-position: initial;"><li class="L0" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L1" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"name"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"NutUX SOHU-INC"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span></code></li><li class="L2" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"version"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"1.0.0"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span></code></li><li class="L3" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"description"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"搜狐技术部前端团队博客,关注前端"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span></code></li><li class="L4" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"app"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L5" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"launch"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L6" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"web_url"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"http://ux.sohu.com"</span></code></li><li class="L7" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">},</span></code></li><li class="L8" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"urls"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">[</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"http://ux.sohu.com"</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">]</span></code></li><li class="L9" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">},</span></code></li><li class="L0" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"icons"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">{</span></code></li><li class="L1" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"128"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"nut_logo.png"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span></code></li><li class="L2" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"48"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"nut_logo.png"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span></code></li><li class="L3" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"16"</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"nut_logo.png"</span></code></li><li class="L4" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">},</span></code></li><li class="L5" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"requirements"</span><span class="pun" style="color: rgb(147, 161, 161);">:{</span></code></li><li class="L6" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"3D"</span><span class="pun" style="color: rgb(147, 161, 161);">:{</span></code></li><li class="L7" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="str" style="color: rgb(221, 17, 68);">"features"</span><span class="pun" style="color: rgb(147, 161, 161);">:[</span><span class="str" style="color: rgb(221, 17, 68);">"css3d"</span><span class="pun" style="color: rgb(147, 161, 161);">,</span><span class="str" style="color: rgb(221, 17, 68);">"webgl"</span><span class="pun" style="color: rgb(147, 161, 161);">]</span></code></li><li class="L8" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li><li class="L9" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);"> </span><span class="pun" style="color: rgb(147, 161, 161);">}</span><span class="pln" style="color: rgb(72, 72, 76);"> </span></code></li><li class="L0" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pun" style="color: rgb(147, 161, 161);">}</span></code></li></ol>
大家可以看到 manifest.json文件,就是一个json格式标准的文件。
- name 属性定义了插件的名称
- version 定义了插件的开发版本号
- description 定义了插件的详细描述信息
- app 对象定义了要打开的URL地址
- iocns 对象定义了几种不同尺寸的图标的地址
- requirements 对象定义了需要用到资源权限
我们把所需要用到图标,也放入到manifest.json所在的文件夹中。
以上,我们就完成了这个简单的chrome插件的开发工作。
下面要让他在chrome中运行起来。
可以在chrome浏览器地址栏输入:
<ol class="linenums" style="padding: 0px; margin: 0px 0px 0px 33px; list-style-position: initial;"><li class="L0" style="padding-left: 12px; color: rgb(190, 190, 197);"><code style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: inherit; border: 0px; background-color: transparent;"><span class="pln" style="color: rgb(72, 72, 76);">chrome</span><span class="pun" style="color: rgb(147, 161, 161);">:</span><span class="com" style="color: rgb(147, 161, 161);">//chrome/extensions</span></code></li></ol>
或者按照以下步骤,打开Chrome浏览器的扩展程序
然后勾选开发人员模式
点击载入正在开发的扩展程序,把之前新建的存放manifest.json文件和logo图片资源的文件夹载入。chrome会自动识别manifest文件并加载图标,如果插件编写没有错误,则会在扩展程序中,添加我们刚刚开发的插件,如下图:
并且在Chrome浏览器的应用程序页,会显示我们的插件图标的快捷方式:
至此,我们的第一个简单的chrome插件就开发完毕!
是不是觉得很容易很简单呢,有了这个成功的开始,如果有兴趣,你也可以开发出功能更强大,效果更炫,体验更好的Chrome插件。
下面推荐一些Chrome插件开发相关的资源,对chrome插件开发有兴趣的同学可以参考: