您的位置:首页 > 其它

Chrome浏览器插件开发入门

2016-04-01 00:19 381 查看
转载: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插件开发有兴趣的同学可以参考:

Chrome官方开发指南
360浏览器开发小组翻译的Chrome官方插件开发文档
Chrome Web Store
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: