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.qinxue365.com/jsjzx/Web_Design/
2.快对作业官网入口网页版2024最新下载快对作业官网入口网页版软件亮点 1.针对不同的学科,我们在这里汇集了很多解读,让孩子的知识更深刻; 2.根据用户平时浏览最多的主题,精准推荐学习资料,随时查阅; 3.在这个平台上,用户可以自定义自己的数据库,所有收集到的数据都可以在这里轻松查看; 4.最后一次巡检章节记录在软件上,便于用户快速定位巡检章节。https://shouyou.3dmgame.com/android/322539.html
3.第23课《海底世界》教学设计(通用5篇)1、充分借助多媒体课件创设情境,激发学生的学习兴趣,引导学生探究海底世界的景色奇异、物产丰富。(如:海面与海底的对比;动物们的声音;教学方式等) 2、设计多种形式的读,并配以音乐,使学生优美的意境中去感受海底世界的美。 六、教学资源 1、多媒体课件 2、教师推荐的网页 https://xiaoxue.ruiwen.com/jiaoxuesheji/254294.html
4.学习贯彻党的二十大精神习近平在学习贯彻二十大精神研讨班开班式上发表重要讲话 习近平带领中央政治局常委瞻仰延安革命纪念地 习近平在中国共产党第二十次全国代表大会上的报告 习近平在二十届中央政治局常委同记者见面时的讲话 党的二十大专题网站 习近平新时代中国特色社会主义思想 学习贯彻习近平新时代中国特色社会主义思想主题教育 https://www.12371.cn/special/xg20djs/
5.新浪财经新浪财经提供7X24小时财经资讯及全球金融市场报价,覆盖股票、债券、基金、期货、信托、理财、管理等多种面向个人和企业的服务。https://finance.sina.com.cn/
6.网页制作学习网站网页制作学习网站专题:为大家提供网页制作学习网站相关内容的文章,以帮助大家更快的找到所需内容。希望丰富的网页制作学习网站资讯能快速帮助您找到有用的信息以解决你遇到的网页制作学习网站问题。https://www.liuxue86.com/k_%E7%BD%91%E9%A1%B5%E5%88%B6%E4%BD%9C%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99/
7.在线英语听力室在线英语听力室是一个免费在线英语听力学习网站,提供经典英语听力教程、英语MP3听力下载、新概念、VOA、少儿英语、四六级英语考试听力等大量英语听力学习资源,网站内英语辅导资料齐全,有效帮助广大英语爱好者完成英语自学课程,突破英语听力障碍!http://www.tingroom.com/
8.学习强国学习宣传贯彻党的二十大精神 奋进强国路 阔步新征程 加快发展新质生产力 重要新闻 打开 李强主持国务院第十一次专题学习 李希:高质量做好纪检监察宣传工作 王毅出席亚信第七次外长会议 石泰峰向党外人士通报中央经济工作会议精神 第十二次中老两党理论研讨会在西安举行 https://www.xuexi.cn/
9.学乐云提供常态化的在线教学和学习服务,包含有小学、初中和高中的授课工具和教育资源,学习资源与内容,是官方信息化教育管理网站http://www.xueleyun.com/
10.学习R语言这几本电子书就够了!腾讯云开发者社区3. 学习资料 电子书还是推荐html的格式,方便copy代码重演结果,如果是英文版的还方便翻译(网页翻译)查看。这里推荐几本书,学习R语言,就应该看最好的教程,学最先进的思想,而不是看陈腐的资料,学过时的方法!!! 第一本:《数据科学中的R语言》https://bookdown.org/wangminjie/R4DS/ https://cloud.tencent.com/developer/article/1940993
11.小学信息技术教案(精选19篇)让学生掌握收藏网址和从网上下载图片、网页的方法。让学生从小养成正确的网络道德意识。培养学生在网上迅速搜集信息、保存信息的能力,培养学生协作学习、与人合作的意识。 重点难点 教学重点:本课教学重点是保存整个网页和保存网页上的图片。这两种操作是我们今后在网上收集资料最常用的方法。 https://www.unjs.com/fanwenwang/jiaoan/20230115124354_6271790.html
12.学英语的网址兽魔(英雄创新实用稳定)环球网有大量的英语学习方面的资源,包括英语学习,参考资料,文化背景,出国学习等方面。 1.国外英语学习教学网页 如果你想访问更多的网页,可通过搜索引擎来进行查寻,如:雅虎(Yahoo),你可以键入象:"TESL", "ESL", "TEFL", "EFL", "English learning",“English Study", "Distance learning"等单词和短语进行搜https://www.iteye.com/blog/407083
13.Bootstrap中文网铂特优选Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。目前,Bootstrap最新版本为5.0 。Bootstrap中文网致力于为广大国内开发者提供详尽的中文文档、代码实例等,助力开发者掌握并使用这一框https://www.bootcss.com/
14.北京化工大学北京化工大学党委理论学习中心组(扩大)举行习近平法治思想专题学习 2024-12-09 北京化工大学举行纪念“一二·九”运动八十九周年系列活动 2024-11-24 北京化工大学本科教育教学审核评估专家意见交流会举行 2024-12-03 北京化工大学党委理论学习中心组(扩大)举行习近平法治思想专题学习 2024-12-09 北京化工大学举行纪https://www.buct.edu.cn/
15.全面详细介绍英语词法与句法以及语法学习的重点难点和考点柯帕斯英语网 柯帕斯英语网 英语答疑网 英语词汇网 中考英语网 非谓语动词 英语资料下载 活到老学到老 长沙网站制作 英语网站123 英语难点学习 英语句子成分 英文阅读网 柯帕斯英语网 本站百度排名 英语问答网 英语动词时态 湖北公务员网 英语答疑网 英语独立主格http://www.yygrammar.com/
16.可可英语在线英语学习每日英语学习年轻人的英语学习网站,主要频道有背单词,外刊精读,名著精读,VOA英语,VOA,bbc,英语听力,英语口语,四六级等英语考试,同时提供音频和讲义下载https://www.kekenet.com/
17.自给自足!学习网页设计必知的20个教学资源站优设网你可以随时随地地在Bloc的网站上学习网页设计与开发,它为你提供来自世界各地的导师,你可以随时随地地把控学习的步调和节奏。学习课程可以一周一次,当然你要是想掌握更快也可以一周三次课程。网站的课程如下: 网页设计 网页开发 iOS开发 当然,想要得到来自世界各地名师的指导并不便宜,你需要在入学的时候上交高大4250https://www.uisdc.com/web-design-learning-resources
18.中科VIPExam考试学习资源数据库王海菂 王老师具有丰富的理论知识和授课经验,讲课幽默、风趣,激情四射,思路清晰,重点突出,煽情加鼓励掌控整个课堂气氛,熟谙近几年经济师工商管理专业、会计职称部分课程命题规律及市场,善于总结归纳,备课颇具特色,能为学员提高学习效率,起到事半功倍的效果,深受学员欢迎! 王静 特聘讲师 ,毕业于北京建筑工程学院,有着丰富http://www.vipexam.cn/
19.学科网全面整合小初新教材资源,契合新理念教法,助力教改适应,提升学习成效。 学科网教学日历 学科网教学日历,汇精华内容,聚精彩活动,一站式服务新体验! 鳍迹课件 课件包内容:静态+动态PPT课件+教案设计+逐字稿+学习任务书+教学反思。 学校买了三年初中网校通!资料充足,大大减轻了负担! https://www.zxxk.com/
20.太极创客–Arduino,人工智能,物联网的应用开发和学习资料资料上新记录 创客项目推荐 哔哩哔哩天气时钟 创客教程推荐 太极创客-零基础入门学用物联网教程 版权声明 本网站访问者可将本网站提供的内容或服务用于个人学习研究以及其他非商业性或非盈利性用途。除此以外,将本网站任何内容(包括图片,文字,视频,程序代码,电路设计)或服务用于任何商业或盈利用途时,须征得本网站及http://www.taichi-maker.com/
21.NOBOOK模拟实验仿真实验虚拟仿真实验“整个学习过程学生的积极性和参与度都非常高。同学们表示通过观看和操作实验使知识有直观的感受,通过自己动手搭建改装实验,能够帮助他们全面了解操作原理、清楚详细的流程步骤,理解物理的道理,记住了复杂的化学反应方程式。” 北京一零一中学 同学们课下争相进行化学虚拟实验,纷纷提出自己的想法和方案,想要用NOBOOK验证自http://www.nobook.com/
22.金山词霸爱词霸英语翻译器为广大英文学习爱好者提供即时的在线翻译、在线词典、英文写作校对、汉译英、英译汉、图片、文档翻译、汉语查词等服务,金山词霸在线查词翻译频道致力于提供优质的在线翻译、查词服务https://www.iciba.com/
23.49个权威的网上学习资源网站学习资料网设计,网页设计与开发 HOW Design University— 主要教授图像与交互设计。 HTML Dog— 学习 HTML, CSS 和 JavaScript 编程技能。 Skillcrush— 提供职业网页设计与开发课程。 Hack Design— 全球顶级设计师教你网页/app设计,完全免费。 综合 Scratch – Imagine, Program, Share— 为小孩子设计,通过游戏学编程。 https://blog.csdn.net/u013474557/article/details/46323463
24.网易有道网易有道是中国领先的智能学习公司,致力于提供100%以用户为导向的学习产品和服务。有道成立于2006年,打造了一系列深受用户喜欢的口碑型大众学习工具产品,例如:网易有道词典、有道精品课、有道翻译官、有道云笔记等。2014年,网易有道宣布正式进军互联网教育行业。2018年https://www.youdao.com/
25.hao123hao123是汇集全网优质网址及资源的中文上网导航。及时收录影视、音乐、小说、游戏等分类的网址和内容,让您的网络生活更简单精彩。上网,从hao123开始。https://www.hao123.com/
26.Git--everything-is-local Git is afree and open sourcedistributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git iseasy to learnand has atiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVShttps://git-scm.com/
27.爱资料工具爱资料工具(toolnb.com),为开发运维提供全面的在线工具箱,已开发工具400款,包含开发工具,运维工具,常用工具,SEO站长工具等,是好用,方便的在线工具网站.https://www.toolnb.com/