书籍详情
《Chrome扩展及应用开发》[22M]百度网盘|亲测有效|pdf下载
  • Chrome扩展及应用开发

  • 出版社:人民邮电出版社
  • 出版时间:2014-09
  • 热度:7200
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐

  国内本介绍Chrome扩展及应用的书
  本诞生于图灵社区的书
  电子书在各大社区受到一致好评
  带你“零距离”地观摩大型技术平台对规范与标准的实现
  让你灵活运用扩展装备浏览器,巧妙借助HTML5创建自己的桌面应用
  《Chrome扩展及应用开发》是讲解如何开发Chrome扩展和应用的系统教程。全书共十章,分为两大部分,分别是扩展和应用。本书由浅入深,条理清晰,非常适合初学者自学。本书提供了大量实例,并结合实例详细生动地讲解相关知识在实践中的应用,加深读者对知识的理解。

内容简介

  

  《Chrome扩展及应用开发》简述了Chrome平台开发的概念、扩展与应用的区别及其常用功能,并结合具体场景给出了实例。主要介绍了Chrome扩展基础、Chrome扩展的UI界面、管理浏览器和部分高级API划分,讲解了文件系统、网络通信、操作USB设备和串口通信等多个与操作系统紧密相关的内容,还介绍了Chrome主题开发、支持国际化的程序开发,以及如何使用Angular框架进行开发。
  《Chrome扩展及应用开发》以直观生动的实例帮助读者理解知识要点,以自顶向下的方式进行讲解,让读者先接触直观的内容,然后慢慢深挖究其本质,非常适合开发者自学。

作者简介

  李喆,网名Sneezry,Chrome扩展及应用开发者,吉林大学电子科学与工程学院在读硕士,现研究方向为计算机视觉的硬件实现。喜欢小动物,养有一只智利狼蛛作为宠物。

精彩书评

  “Chrome Extension和Chrome App是Chrome和Chrome OS平台上的开发方法,之前火爆的火车票抢票工具就是基于此开发的。本书是国内介绍这项技术的书,它特别适合入门新手和想快速了解该技术的专家们。特别难得的是,书中的示例都在GitHub上,读者可以直接在开源平台上与作者切磋。”
  

  ——吴英炳,Google高级软件工程师


  

  “本书系统化地介绍了Chrome平台的扩展构架和机制,通过实际可执行的代码由浅入深地介绍了如何完整地开发Chrome 扩展。通过阅读本书,读者对W3C标准将会有更细致的理解,并且可以“零距离”地观摩大型技术平台对规范与标准的实现。对正在或有志于从事互联网行业的开发者而言,这将是一个非常良好的学习体验。”
  ——舒文,前端技术专家

目录

第1章 初步接触Chrome扩展及应用开发 001
1.1 认识Chrome扩展及应用 002
1.2 应用与扩展的区别 003
1.3 我的第一个Chrome扩展 004
1.4 Manifest文件格式 008
1.5 DOM简述 011
1.6 调试方法与代码质量 013

第2章 Chrome扩展基础 016
2.1 操作用户正在浏览的页面 017
2.2 跨域请求 020
2.3 常驻后台 025
2.4 带选项页面的扩展 027
2.5 扩展页面间的通信 032
2.6 存储数据 034
2.7 i18n 037

第3章 Chrome扩展的UI界面 039
3.1 CSS简述 040
3.1.1 默认样式及box模型 040
3.1.2 元素定位 042
3.1.3 字体及背景颜色 043
3.2 Browser Actions 045
3.2.1 图标 045
3.2.2 popup页面 047
3.2.3 标题和badge 049
3.3 右键菜单 051
3.4 桌面提醒 056
3.5 omnibox 058
3.6 Page Actions 061

第4章 管理你的浏览器 062
4.1 书签 063
4.1.1 创建书签 064
4.1.2 创建书签分类 064
4.1.3 调整书签位置 065
4.1.4 更新书签 065
4.1.5 移除书签 065
4.1.6 获取书签内容 065
4.1.7 书签事件 066
4.2 Cookies 068
4.2.1 管理Cookie 068
4.2.2 读取Cookie 069
4.2.3 设置Cookie 069
4.2.4 删除Cookie 070
4.2.5 获取全部的cookie store 070
4.2.6 监控操作Cookie的行为 071
4.3 历史 071
4.3.1 读取历史 072
4.3.2 添加历史 073
4.3.3 删除历史 074
4.3.4 对历史操作的监听 074
4.4 管理扩展与应用 075
4.4.1 读取用户已安装的扩展和应用的信息 075
4.4.2 获取权限警告 076
4.4.3 启用、禁用、卸载扩展和启动应用 076
4.4.4 对管理操作的监听 077
4.5 标签 078
4.5.1 获取标签信息 078
4.5.2 创建标签 079
4.5.3 更新标签 079
4.5.4 移动标签 080
4.5.5 重载标签 080
4.5.6 移除标签 080
4.5.7 获取当前标签页面的显示语言 081
4.5.8 获取指定窗口活动标签可见部分的截图 081
4.5.9 注入JavaScript和CSS 081
4.5.10 与指定标签中的内容脚本(content script)通信 082
4.5.11 监视标签行为 082
4.6 Override Pages 084

第5章 部分高级API 086
5.1 下载 087
5.2 网络请求 089
5.3 代理 092
5.4 系统信息 095

第6章 Chrome应用基础 098
6.1 更加严格的内容安全策略 099
6.2 图标设计规范 101
6.3 应用的生命周期 103
6.4 应用窗口 106
6.4.1 创建窗口 106
6.4.2 样式更加自由的窗口 109
6.4.3 获取窗口 115
6.4.4 窗口事件 116
6.5 编写第一个Chrome应用 117

第7章 文件系统 125
7.1 目录及文件操作对象 126
7.2 获取目录及文件操作对象 127
7.3 读取文件 128
7.4 遍历目录 130
7.5 创建及删除目录和文件 132
7.6 写入文件 134
7.6.1 Typed Array 134
7.6.2 Blob对象 136
7.6.3 FileWriter对象 137
7.7 复制及移动目录和文件 139

第8章 媒体库 140
8.1 获取媒体库 141
8.2 添加及移除媒体库 146
8.3 更新媒体库 148
8.4 获取媒体文件信息 152

第9章 网络通信 154
9.1 UDP协议 155
9.1.1 建立与关闭连接 156
9.1.2 发送与接收数据 158
9.1.3 多播 160
9.1.4 获取socket和组 162
9.1.5 局域网聊天应用 163
9.2 TCP协议 166
9.2.1 建立与关闭连接 167
9.2.2 发送与接收数据 168
9.2.3 获取socket 170
9.3 TCP Server 170
9.3.1 建立与关闭连接 171
9.3.2 监听数据 173
9.3.3 获取socket 174
9.3.4 HTTP Server 175
9.4 WebSocket 178

第10章 其他接口 179
10.1 操作USB设备 180
10.1.1 发现设备 180
10.1.2 接口操作 181
10.1.3 传输操作 182
10.2 串口通信 183
10.2.1 建立连接 183
10.2.2 发送和接收数据 184
10.2.3 获取连接及状态 185
10.3 文字转语音 185
10.3.1 朗读文字 186
10.3.2 获取声音 187
10.3.3 获取朗读状态并监听事件 188
10.4 系统信息 189

附录A 制作Chrome主题 191
A.1 背景图片 193
A.2 颜色 198
A.3 颜色叠加 205
A.4 UI属性 206
A.5 使用My Chrome Theme制作主题 209

附录B CSS选择器 212
B.1 基本选择器 213
B.2 高级选择器 215
B.3 伪类 216

附录C 初识AngularJS 220
C.1 视图 221
C.2 $scope 224
C.3 module与路由 225

附录D Chrome扩展及应用的完整API列表 229
D.1 Chrome扩展的全部API 230
D.2 Chrome应用的全部API 235

精彩书摘

  认识Chrome扩展及应用
  Chrome是Google公司基于WebKit开发的一款浏览器[1],但从某种角度上来说,它的作用已经远远超越了浏览器,而是成为了一个平台,甚至是一个操作系统。Chrome继承了WebKit内核对HTML的高速渲染,同时Google自行开发的V8引擎使得JavaScript在Chrome中的执行效率大幅提升,这使得更加高级复杂的JavaScript程序在Chrome中运行成为可能。
  Chrome浏览器除了页面渲染速度快、JavaScript执行速度快以外,另一大特点就是支持开发者为其编写各种各样的扩展来扩充其功能,支持用HTML5编写桌面程序,这使得Chrome变得更加强大。编写这样的程序就是本书所要讲解的内容。
  由于Chrome扩展和Chrome应用有很多相似之处,为了叙述方便,本章会统一说成Chrome扩展,但读者应该清楚,这些内容同样适用于Chrome应用。
  Chrome扩展是一系列文件的集合,这些文件包括HTML文件、CSS样式文件、JavaScript脚本文件、图片等静态文件以及manifest.json。个别扩展还会包含二进制文件,如DLL动态库和so动态库等,但这需要调用NPAPI,而Google出于安全性考虑,已经决定逐渐淘汰NPAPI,所以本书不会向大家介绍有关NPAPI的内容。
  安装扩展后,Chrome就会读取扩展中的manifest.json文件。这个文件的文件名固定为manifest.json,内容是按照一定格式描述的扩展相关信息,如扩展名称、版本、更新地址、请求的权限、扩展的UI界面入口,等等。这样Chrome就可以知道在浏览器中如何呈现这个扩展,以及这个扩展如何同用户进行交互。
  由于Chrome扩展是基于Chrome平台的,说得直白些,是基于WebKit浏览器的——当然有些更加高级的接口不仅仅依赖于WebKit浏览器——所以Chrome扩展在处理逻辑运算和实现程序功能时,所采用的编程语言必然只能是JavaScript。
  可能你会感到惊讶,毕竟JavaScript最开始是为提升网站与用户交互体验而设计的一种轻量级脚本语言,怎么会脱离网站而成为一种程序的逻辑语言呢?随着Chrome浏览器V8引擎的出现,JavaScript的执行效率得到了大幅提升,甚至出现了将其作为后端语言的项目——Node.js,所以将JavaScript作为一种客户端程序语言就更是绰绰有余了——只要提供更加丰富的功能函数——而Chrome平台恰好提供了这样的环境。
  总的来说,Chrome扩展更像是一个运行于本地的网站,只是它可以利用Chrome平台提供的丰富的接口,获得更加全面的信息,进行更加复杂的操作。而它的界面则使用HTML和CSS进行描述,这样的好处是可以在很短的时间内构建出赏心悦目的UI。界面的渲染完全不需要开发者操心,可以交给Chrome去做。同时,由于JavaScript是一门解释型语言(现代浏览器使用的JavaScript引擎会对JavaScript进行编译,如V8),无需对其配置编译器,因此调试代码时,你只要刷新一下浏览器就可以看到修改后的结果,这使得开发周期大大缩短。
  同时,Chrome浏览器比Java虚拟机、Python解释器(Linux和OSX中默认安装了Python,而Windows中默认没有安装)等其他语言环境更加普及——我甚至可以在我们学校图书馆的计算机中找到Chrome浏览器——所以你所开发的Chrome扩展可以在更多的计算机中运行。当你遇到一个问题需要利用计算机去处理时,而这台计算机恰好安装了Chrome浏览器,那么你就可以欢快地打开记事本开始编写程序了,完成之后加载到Chrome浏览器中就可以查看运行结果,这是一件多么酷的事啊!
  别急,后面的内容就会让你掌握这项新技能!
  ……

前言/序言

  一个电子专业的在校学生,每天学习的是电子在晶格中如何游走,研究的是半导体器件的电学特性,无论如何都不会与这本书的作者联系在一起。

  说起来,写这本书非常偶然。某一天我突然就想写点什么了,想写点很多人都会看的东西,作为人生中的一个成就。虽然我的专业是电子,但编程一直都是我最大的爱好,前端更是我最熟悉的领域。作为Google 的追随者,我是第一批使用Chrome 浏览器的用户,也是Chrome 推出扩展功能后较早投入其中的开发者之一,所以Chrome 开发自然就成为了我写作的首选。

  我在2010 年9 月份开始接触JavaScript,当时这门与HTML 和CSS 巧妙结合在一起的编程语言立刻就迷住了我。在刚刚接触JavaScript 时,我常常写一些简单的代码段来更改网页的外观或增强浏览器功能,比如将当前网页背景更改成类似安卓手机的动态壁纸,或者是自动给出鼠标选中单词的翻译,等等。这些代码段被称作bookmarklet(书签小程序),编写bookmarklet是我第一次通过JavaScript 和浏览器打交道。接下来我编写了第一个Google 在线输入法的bookmarklet,甚至早于Google 官方。2011 年1 月Google 输入法的工程师们通过这个小程序联系到了我,并鼓励我到Google 实习。

  随着我编写的bookmarklet 功能越来越复杂,简单的代码段已经无法实现我创作的灵感,于是我开始试着开发Chrome 扩展程序。Chrome 扩展程序不仅仅可以获取到更高的权限,实现更加复杂的功能,而且还可以让用户感觉这个小程序本身就是浏览器的一部分。在接下来的一年里,我发布到网上商店的扩展有20 余款(由于网上商店有每个开发者最多发布20 款扩展应用的限制,因而部分扩展后来被我下架了),而那些我为自己临时需求而编写的没有发布到网上商店的扩展则数不胜数,由此我意识到Chrome 扩展已经真正融入到了我的生活。这些扩展中我认为最成功的是一款名为Dualx 的即时通信程序,2013 年4 月火狐的工程师通过Dualx 联系到了我,并邀请我到火狐参与火狐浏览器扩展的开发工作。

  如果说Chrome 扩展让我重新认识了浏览器体验,那么Chrome 应用可以说让我重新认识了软件开发。之前我用VC 和VB 编写过带有可视化窗口的程序,但是它们看起来总是很丑,而HTML 和CSS 却可以通过几行简单的代码编写出一个绚丽的页面。当Google 提出PackagedApp 的概念时,我意识到利用HTML 和CSS 编写程序窗口将是一件多么令人兴奋的事情!经过Google 工程师认真优化过的JavaScript 引擎确保了JavaScript 可以胜任大型程序的逻辑语言,Google 对Chrome OS 的强力推广确保了Chrome 应用的市场地位,于是,越来越多的公司开始将产品延伸到Chrome 应用这一新的平台上。

  这本书诞生于图灵社区,图灵社区的写作氛围很好,而且在线编辑器支持Markdown 语法。一开始我并不好意思直接说写的是书,直到定稿前夕我才把“文集”二字改成了“书”。回顾几个月之前,一拍脑门夹着笔记本就去图书馆开写了。在写作的过程中遇到一个又一个坑,有时为了让一个实例跑通,要调上一整个下午。如果当初我知道会遇到这么多困难,想来是不会动笔的。但既然动笔了,半途而废着实没有颜面,所以就一直坚持到了最后。写作对个人能力的提升是非常大的。由于每一个知识点都必须准确,不可含糊其辞,所以我在写作的过程中不得不一遍遍仔细翻阅Chrome 官方开发文档和W3C 标准,同时还要编写实例进行验证。

  值得庆幸的是,这本书还没有完成就得到了很多读者的关注,他们给了我很大的鼓励,有的读者还表示可以无私地帮我审校书稿。

  在此我要重点感谢方觉。大家可能对这个名字并不熟悉,但他创建和维护的crxdoc-zh.appspot.com,相信开发Chrome 扩展和应用的人没有几个不知道的。这本教程也参考和引用了该网站的部分内容,在此表示感谢。他不仅帮助我仔细地推敲本书的语言表述,而且还纠正了一些知识错误,甚至是官方文档中同样出现的错误。这让我感到十分惊讶,后来才发现他还是Chromium 项目的贡献者,就更加对他敬佩不已了。

  吕鹏同学是我很早就在互联网上结识的朋友,他和我一直在一起鼓捣些小程序。能找到志同道合的小伙伴非常不易,我十分庆幸能在广阔的互联网中与他结识。初识吕鹏时,他还是个大二的在校生,转眼就已是微软的大牛了,我为能有如此优秀的朋友感到自豪。吕鹏是第一个知道我要写这本书的人,在写作的前期他给了我莫大的鼓励,而这是促成本书的重要因素。本书初稿写成后,他也参与了审校,并在最终定稿前对本书的结构和配图给出了非常好的建议,在此非常感谢他所提供的帮助!

  在我刚刚开始写独立博客时,李典同学就成为了我的读者,虽然他一直躲在Google Reader后面。李典同学是第一个为此书提交勘误表的读者。在早先他为我的一个项目贡献代码时,我就发现他是一个做事十分认真的人,这次也不例外,以至于后来我将他的勘误表作为样板发给了参与审校的每一位读者。感谢李典同学为这本书作出的贡献!参与审校的还有赵余和韩骏,在此一并表示感谢!

  最后我还要感谢图灵公司的杨帆、张霞和傅志红老师的鼓励和建议,感谢李鸿鹏编辑和张霞编辑的细心修改,没有他们的帮助,这本书就无法与读者见面。

  由于水平有限,书中不免出现错误,欢迎读者朋友指正。你可以通过lizhe@lizhe.org 与我联系,也可以通过图灵社区在线提交勘误信息,在此先行感谢。