chrome插件开发chrome扩展程序开发chrome插件开发

因为Chrome的插件开发起来最简单,总体上看没什么新的技术,开发语言就是javascript,web前端工程师能很快上手;而Firefox的插件开发则复杂许多,涉及到环境的搭建和一些WEB以外的技术;IE的插件开发就更复杂了,需要熟悉C++和COM技术,当然还要装微软的VisualStudio。

应该说Chrome浏览器和Opera的插件的开发都不难,但Firefox的则比较棘手,也许你要问,那为什么Firefox的插件是最丰富的?我想这有些历史原因,Chrome出来毕竟比较晚,另外几种浏览器提供的插件的功能也是不尽相同的,OK,我们还是言归正传吧。

几乎是零需求。Chrome浏览器和一个文本编辑器即可,文本编辑器最好是带语法高亮的那种。谷歌对我们做技术的人来说真是太大度了。

这个插件一共有4个文件:

manifest.json中的内容也非常显而易见,我选择其中几个属性讲一下:

"default_popup":用来指定点击小图标后弹出的小窗口中默认显示的是哪个html,这个弹出的小窗口就叫做“popup”。

"browser_action":这是一个浏览器级的动作,也就是说,不管你现在在访问哪个页面,那个小按钮总是显示出来,而我们的插件如果仅仅是针对某些页面的话,就不适合用这个"browser_action"了。下面我们来弄一个只有访问博客园(www.cnblogs.com)才会出现的小按钮。

1插件只有4个文件,其中两个还是图标,那就只剩下一个必须的manifest.json和一个background.js了。

mainifest.json:

“permissions”属性里的“tabs”是必须的,否则下面的js不能获取到tab里的url,而这个url是我们判断是否要把小图标show出来的依据。background是什么概念?这是一个很重要的东西,可以把它认为是chrome插件的主程序,理解这个很关键,一旦插件被启用(有些插件对所有页面都启用,有些则只对某些页面启用),chrome就给插件开辟了一个独立的javascript运行环境(又称作运行上下文),用来跑你指定的backgroundscript,在这个例子中,也就是background.js。

background.js

当然了,你现在点那个小图标的话,是没有任何反应的,我没有像官方提供的那个例子那样提供了popup。OK,现在是时候描述下chrome插件的结构了。

如图,manifest.json作为插件的配置文件,同时可以看作程序的“入口”,因为它指定了显示什么图标,backgroundscript有哪些文件,contentscript又有哪些文件,popup的页面是什么,等等。

什么是popup,什么是backgroundscript,相信大家都清楚了,那什么是contentscript呢?contentscript就是我们要注入到页面中的脚本,插件允许我们往网页中注入脚本,这是一个多么让人有想象力的功能,其功能之强大无需多解释,总的来说,就是让我们全面干预页面的内容!也许你马上会想到,这可能带来很大的安全隐患,没错,有些恶意插件会窃取你的页面信息,而有些有漏洞的插件则可能让你遭受跨站脚本注入(XSS)的攻击;另一个可能你会想到的问题是:往页面中注入自己的脚本,难道不会跟页面原本的脚本发生冲突吗?能想到这点说明你真的很厉害,如果我们的注入脚本和页面原本的脚本处于同一个运行环境中,确实会发生冲突,所以,Chrome是另外开辟了一个独立的运行空间,供我们的ContentScript使用的,ContentScript能访问DOM的内容,但却不能访问页面原本的脚本(我是说直接访问不行),反之,页面原本的脚本也不能直接访问ContentScript。在图中,浅红色的背景块代表ContentScript的运行环境,而浅蓝色的背景块代表页面运行环境,另外插件的运行环境我用浅绿色表示,注意,这是三个不同的运行环境,调试的时候你会充分体会到它们的不同。

由于处于不同的运行环境中,ContentScript和BackgroundScript不能直接互相访问,那它们之间如何通信?通过Message!这个之后的代码中会有。

遇到问题,怎么办?当然是用google去查找问题,但这里我最最最强烈推荐stackoverflow.com,这简直是解决问题的神器!不多解释了,用过便知。

学习过程基本上就是:看个大概,写点代码,调试调试。就可以了。哦,大前提当然是你得有javascript的基础。(你:呵呵,你在逗我吧!)

案例插件下载见本文下载地址:

这个插件一共有9个文件,新出现的文件有两个(其它相信大家都很熟悉了),一个是“content_script.js”,这就是前面提到的ContentScript,获取和修改页面的内容就靠它了;另一个是“jquery-2.0.0.min.js”,大名鼎鼎的jQuery,我很喜欢用的js库,其理念是“writeless,domore”,能帮我减少很多代码,这是目前最新的2.0.0版,这个版本跟以前的1.x.x的最大差别就是不再支持IE6、7和8,我个人是十分赞同这种做法的,微软的旧版浏览器都成了Web技术发展的绊脚石了,而且这次我们用的是Chrome浏览器,果断选择最新版了。另外还有一个服务器端,为了让问题简化,这次我用了php代码,一个php文件就是整个处理了,没有太多繁杂的配置,简洁,这是php最大的优势。系统结构如图:

另外还需说明的一点是我使用了jQuery做XMLHttpRequest,post的内容不是传统的html表单形式,而是json数据,所以在服务器端这边,就不能直接用$_REQUEST获取,而是通过读取“php://input”的内容获取。顺便谈谈个人对webapi的一个看法:“统一”大于“灵活”,这是我的观点,我确定我的接口的格式是json,使用utf-8编码,于是就一直用下去,调用者不用考虑用XML还是html表单还是别的,开发者也不必多考虑,让这成为一种统一的约定,在团队协助和以后的开发中会很省事。

程序开发,必定要涉及到调试,记得我刚开始做WEB开发前,问一些做了好久WEB开发的朋友,你们是怎样做javascript调试的,我发觉大多数人竟然回答:用alert一点点试吧——不是不行,是太原始,太低效了,对吧?其实Chrome直接支持javascript的调试,拥有了Chrome,就相当于拥有了一个强大的javascript调试器了。

Chrome打开开发者工具的方法是++(Windows版),大致如下:

我们这次需要关心的有“Elements”、“Sources”和“Console”这三个标签。Elements是用来做DOM分析的,功能有点类似Firebug,帮助我们分析页面的内容;而Sources,是我们用来调试javascript的;Console则是我们的Log的输出窗口,也是一个调试利器。

如我提供的这个例子,可在Sources的“CopntentScripts”下看到“content_script.js”然后设断点,执行到断点处时,Chrome会挺住,你可以观察到上面的值,如图:

太cool了,请问你还要一点点alert吗?

由于background和contentscript并不在同一个运行环境中,因此上面的方法是看不到Background的javascript的。要调试Background,还需要打开插件页,也就是“chrome://extensions”。点对应的插件的“generatedbackgroundpage.html”,就出现了调试窗口,接下来的操作就跟前面的类似了。如图:

至于你看到ID,“aajnhhjiia……”这一长串东西,这是chrome自动安排的一个ID。

虽然Popup和Background是处于同一运行环境中,但在刚才的Background的调试窗口中是看不到Popup的代码的。调试Popup还需要这样:

然后……就跟前面差不多了。

也许有时候你会发觉调试器不是很灵,至少我用下来感觉如此,比如你可能发现断点设不了,或者断点不起作用,或者看不到你自己的javascript文件。我的方法是在插件页中,把对应的插件的“已启用”这个复选框去掉,再重新勾上,然后再点一下“重新加载(Ctrl+R)”,通常能解决问题。当然了,还有些很古怪的问题,还不好重现,总体的解决思路就是重新载入一下,实在不行的话重启浏览器,或者清除浏览器缓存什么的,再试试看。

在做插件调试的时候我还遇到一个十分郁闷的问题,那就是我的Chrome使用了“GoAgent”,关于GoAgent是用来干嘛的,这个嘛,可以去google一下,我相信绝大多数程序员都会喜欢上它……可由于使用了这个东西,很可能会导致插件的XMLHttpRequest工作不正常,而且可能你会思索半天也找不到原因,好吧,暂时把GoAgent停用掉,甚至可能你需要重启下Chrome——我的经验。

我还是想说,我觉得Google对我们程序员来说是个很大度的公司,在Chrome这个产品上面就可见一斑。利用Chrome插件技术,我们可以做许多有用的东西,通过本文,相信你已经知道如何去开发一款Chrome插件了,当然了,Chrome插件的功能是很强大的,我用到的仅是冰山一小角。要深入,当然还需要更加充分地利用google和stackoverflow.com了。

THE END
1.浏览器上的免费学习资料–专业资料网看到很多同学都在问浏览器上的免费学习资料的相关问题,今天它来啦! 网络上有大量的免费学习资料,但是如何能够找到有价值的资料却并不容易。本文将介绍几个提供免费学习资料的网站,以及如何在浏览器上使用这些资料。 大纲: 免费学习资料的价值 提供免费学习资料的网站 https://www.zhuanyeziliao.com/39697.html
2.学习资料大汇总你想要的全都有学习资料大汇总 你想要的全都有 /share/ 学期已经过半,大家是否都习惯了大学的生活?相对于高中,大学的学习更考验同学们的自学能力。掌握学习方法、找到到合适的学习网站能为我们节省不少时间。 今天小编特意整理了一些好用的学习网站,让我们一起高效学习叭! https://mp.weixin.qq.com/s?__biz=MzIyNTYyNzE0MA==&mid=2247532244&idx=1&sn=100781dc388fb02263c9de6f68fc0241&chksm=e87ee3bfdf096aa961d1418d86a1cc56fd7b15372002917db9bb50a53fc1f98cc3c40a3b01f7&scene=27
3.建议收藏推荐12个堪称神器的学习网站(1),2024年最新oppohr面试如果你需要这些资料,可以添加V获取:vip1024b (备注Java) 正文 对于我们程序员来说,既然进入了专业的编程领域,算法、数据结构、网络模型、计算机原理、汇编等这些计算机科学专业的理论知识是必须要学习的。 虽然数据结构、算法很难,但我们不能放弃,像一些中大型互联网公司,一面必问数据结构和算法,慢慢找感觉,没有捷径https://blog.csdn.net/2401_84434301/article/details/137934079
4.小明希望一打开IE浏览器就能直接访问某网站,便于查询学习资料小明希望一打开IE 浏览器就能直接访问某网站,便于查询学习资料。那么小明可以选择的设置方法是()。A.把该网站的网址用笔抄写在笔记本上B.把该网站的首页的内容保存在硬盘上C.把该网站的网址设置为浏览器的主页D.把该网站的网址添加到收藏夹的答案是什么.用刷刷题APP,拍照搜https://www.shuashuati.com/ti/36e9a59902534738a705f6e3eac13a2c.html?fm=bdc15f7ecfb746c59dc99740a9fc2f4b15
5.汇总值得买学习神贴,涨姿势看宝藏值友,给热爱学习的你十五款神级浏览器插件, 分享下正在使用的15款「好用到爆」的神级插件,这些插件不仅适合新版Edge,对于谷歌chrome用户来说,也是不容错过。 生活家 @梦的三重奏 男士穿搭 《慢穿搭》 篇五:2000元全买T恤 !10套春夏极简男士穿搭 首席生活家@COldish, 大佬在男士穿搭方面应该是张大妈这里的首席, 当之无愧。 大https://post.m.smzdm.com/p/a83gv360/
6.夸克浏览器夸克官网电脑版下载夸克pc/app为你带来极速、智能、安全、高效的搜索体验,找答案,找资料,找工具,办公,学习,工作必备应用。夸克提供浏览器搜索引擎、网盘、AI扫描王工具及小说阅读等高效功能,为你提供稳定,安全,流畅的浏览环境和优质的产品服务体验https://www.myquark.cn/
7.中国知网中国知网知识发现网络平台—面向海内外读者提供中国学术文献、外文文献、学位论文、报纸、会议、年鉴、工具书等各类资源统一检索、统一导航、在线阅读和下载服务。涵盖基础科学、文史哲、工程科技、社会科学、农业、经济与管理科学、医药卫生、信息科技等十大领域。https://www.cnki.net/
8.ASP.NETCore适用于.NET的开源Web框架为一系列客户端(包括浏览器和移动设备)开发 REST API 实时 启用服务器和客户端之间的实时双向通信 人工智能和 ML 使用C#、OpenAI 和 Azure 构建智能应用 什么是 ASP.NET Core? .NET 是一个开发人员平台,由工具、编程语言、库组成,用于构建许多不同类型的应用程序。 https://asp.net/
9.搜外网:SEO培训入门图文教程网络营销技术视频网课搜外网专注SEO培训以及网络营销技术视频网课。为搜外用户提供符合SEO的建站系统搜外6系统、设计小程序的搜外七巧板、滴滴友链等工具平台。http://www.seowhy.com/
10.有道云笔记亿万用户的选择强大的实用功能,丰富的专业模版,悉心关照工作、生活、学习中的各个使用场景 网易10年产品沉淀,亿万用户的共同选择 用过很多文档笔记类的产品,有道云笔记是最深得我心的了,2000多天的有道云笔记,悄悄记录了我的写作灵感、书评笔记、还有更多的生活故事。 http://note.youdao.com/
11.游民星空游民星空是国内单机游戏门户网站,提供特色的游戏资讯,大量游戏攻略,经验,评测文章,以及热门游戏资料专题https://www.gamersky.com/
12.国家企业信用信息公示系统导航 地方频道 登录 注册 企业信用信息 经营异常名录 严重违法失信名单 热搜榜: 安徽登高而歌网络科技有限公司 亳州高新技术产业开发区芍林谷百货商行(个体工商户) 巢湖市东方名剪美发店二店 更多 信息公告 企业信息填报 小微企业名录 使用帮助https://ah.gsxt.gov.cn/
13.太极创客–Arduino,人工智能,物联网的应用开发和学习资料资料上新记录 创客项目推荐 哔哩哔哩天气时钟 创客教程推荐 太极创客-零基础入门学用物联网教程 版权声明 本网站访问者可将本网站提供的内容或服务用于个人学习研究以及其他非商业性或非盈利性用途。除此以外,将本网站任何内容(包括图片,文字,视频,程序代码,电路设计)或服务用于任何商业或盈利用途时,须征得本网站及http://www.taichi-maker.com/
14.共产党员网习近平:深入推进党的自我革命?学习文章 中央经济工作会议举行 习近平发表重要讲话 解读:2025年经济工作重点在哪 如何发力 中央企业领导班子思想政治建设座谈会召开 高校党的建设与思想政治工作开创新局面 党的二十届三中全会 |学习资料?辅导文章?知识自测 https://www.12371.cn/
15.学霸盘:百度网盘学习资料搜索下载神器新媒派第一步:你需要访问学霸盘的官方网站。 第二步:在搜索框中输入你想要查找的学习资料的关键词,比如“考研资料”或“编程教程”。 第三步:输入关键词后,点击搜索按钮,学霸盘会展示出相关的百度网盘资源。 第四步:浏览搜索结果,找到你需要的资源。点击你选择的资源,学霸盘会提供一个百度网盘的下载链接。你可以点击下https://pidoutv.com/sites/16653.html
16.《浏览网页》优秀教案范文(通用5篇)1、浏览网页时发现了很多重要的信息,怎么保存到自己的计算机上呢? 2、这节课学习“网页的`下载与保存” 二、保存网页。 1、请同学们跟着老师打开寓言故事"的网站。 用“baidu”搜索即可 2、这个网站,我们可以从IE浏览器的地址栏中去把它找出来。因为输入过一次的网址,会在短时间内保存在地址栏中。 https://www.ruiwen.com/jiaoan/1901125.html
17.优酷为好内容全力以赴视频服务平台,提供视频播放,视频发布,视频搜索,视频分享https://www.youku.com/
18.新东方大学考试官网中学学科网在线翻译豆丁网听力课堂中国考研网新东方官网易考吧考研职上网会计职上网注册会计师职上网经济师职上网证券职上网基金有声小说听小说厚学网高三网看准网环球网校乐乐课堂律师公务员考试教育CPS联盟法律咨询高顿网校重庆招聘网精英家教网中华考试网国家公务员考试教师网教育联展网学习工具试题职上网中公网校上学吧腾讯http://bbs.koolearn.com/
19.无极浏览器无极浏览器是一款教学专用免费的极速安全浏览器,专注于教学用户、家庭访问学习使用场景,内置录制软件、录屏软件、直播软件、具有学习考试锁屏、管控等功能,安全干净,绿色纯净,无弹窗广告。 集成10大教学授课功能 素材导入,同步录制,图形绘制,电子黑板,双摄像头录制,资源库,视频编辑,背景选择,多种截图 https://www.xxbrowser.cn/
20.Less快速入门Less.js中文文档在浏览器环境中使用 Less : 请查看Less.js 更新日志 Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。这里呈现的是 Less 的官方文档(中文版),包含了 Less 语言以及利用 JavaScript 开发的用于将 Less 样式转换成 CSS 样式的 Less.js 工具。 因为Less 和 CSS 非常像,因此很容易学习。https://less.bootcss.com/
21.沪江法语沪江旗下法语学习资讯网站法语在线学习沪江法语是沪江旗下法语学习资讯网站,提供法语入门、法语发音、法语考试教程、学习资料、法语电影、法语歌曲、香颂、时尚、文化、法国留学、留法生活等内容,让你足不出户在线学法语。https://fr.hujiang.com/
22.关于杭州交警机动车驾驶人道路交通安全教育平台登录问题解答2.为何用360安全浏览器学习,视频在拍完照后播放不了,显示准备就绪 出现这种情况建议先到网站首页测试一下当前的网速是否正常,如果网速过慢或不稳定建议先学习其它专区的内容,如果网速支持播放,建议使用IE浏览器登录 3.进入理论学习出现:视频插件已损坏请重新安装的提示 https://www.66law.cn/laws/806335.aspx
23.java模拟网页操作java模拟浏览器登录Java模拟浏览器登录带保护的网站 刚学习Android的同学,像我一样,在了解了Android的基本布局,组件和其他基本知识后,就迫不及待的向编写一个自己的软件。对于在校的同学来说,写一个关于教务的app还是挺有价值的,不管是锻炼做项目的能力,还是学习其他相关知识,都是一个不错的选择。我们的教务系统一般都是可以在浏览器https://blog.51cto.com/u_16213663/6964670
24.网页设计的注意事项在你的计算机里看起来相当好的页面,在另一个不同的平台上看起来可能非常糟糕。一些网站设计员喜欢使用来定义特性,这虽然允许你使用特殊的字体,但是仍需要一些变通的方法,以免你所选择的字体在访问者的计算机上不能显示。级联风格表CSS有助于解决这些问题,但是只有最新版的浏览器才支持CSS。https://www.yjbys.com/edu/meigongsheji/308312.html
25.久久建筑网久久建筑网主要栏目有,建筑标准图集规范下载,图片集下载,建筑论坛,建筑资料,建筑规章标准,建筑图纸,土木工程资料,建筑方案,建筑设计,建筑图纸,施工组织设计,建筑资料下载等版块的综合性建筑类行业网站。久久建筑网 www.99jianzhu.comhttps://www.99jianzhu.com/
26.青骄第二课堂登录后开始学习 精品推荐 学习指南 | 9月1日开始新学期课程 启动| 2024年全国青少年禁毒知识竞赛 【官方题库-小学组】2024年全国青少年禁毒知识竞赛 【官方题库-中学组】2024年全国青少年禁毒知识竞赛 开学第一课:给爸妈布置作业! 学习指南 | 9月1日开始新学期课程 https://2-class.com/