浏览器家园·资讯

展开

Chrome扩展插件练习——书签管理

编辑:浏览器知识

前言

这是一篇关于Chrome扩展插件入门、Vue.js入门的小练习,功能是:在当前浏览的页面点击扩展图标,并点击保存之后,该页面就会存在你的新标签页中。其实就是一个可视书签的内容。
欢迎大家指出代码的不足之处,很多时候都是自己学习自己码代码,太需要别人的意见了。


Demo代码

代码戳这里

Chrome插件预备知识

首先给出一本参考的中文书籍,在练习的过程中有帮到忙。当然,最权威的还是官方文档,只不过像我这种英文不太好星人只能拣自己看得懂的看了。另外还有官方文档的中文版,在英文版看不懂的时候用。

这一项是设置你的扩展在浏览器窗口上的小图标,以及点击这个图标弹出的页面的,你会发现文档的写法跟我有些不一样,因为我有点懒,这样写字数比较少,省事儿。同学们不要学我呦。

中文翻译过来应该叫内容脚本,它可以运行在你指定的页面之中,可以拿到指定页面的一些信息。指定的页面就是“matches”这一项了。在本练习中,可以看到用正则匹配了所有页面,因为毕竟是要做书签嘛。“js”这一项是一个数组,里面放的就是你在指定页面里用的脚本,前三个都是依赖,最后一个contentScripts.js才是真正搞事情的脚本,注意依赖是有顺序的噢,其实与在<head>标签里引<script>标签是一回事情。

但其实,我总觉得这么个小demo也许用不到内容脚本,但是水平有限,找不到更好的实现方法,期待大牛与我交流。

向chrome申请一些权限,这里我申请了tab 浏览器选项卡的权限,因为做书签时我需要当前tab的url。还有一些别的权限,请参考文档


思路整理

通过以上的说明书,应该大致明白这个扩展插件是怎么回事了,接下来该考虑怎么实现功能。

拿到url的信息比较简单,chrome.tabs这个API下有一些methods,查看文档发现chrome.tab.query可以query到当前的选项卡,成功拿到页面的url和title


但是问题来了,popup.html虽然是在我当前浏览的窗口上弹出来的,但是是与当前页面独立,如何能获取当前页面的截图呢?


如果你在认真看之前的内容的话,现在脑子蹦出来的应该是——content Scripts!
没错,是它 是它 就是它!上文提到了,这个内容脚本可以运行在指定的页面之中,并且貌似可以拿到当前页面的dom结构,所以,可以在contentScripts.js中使用html2canvas插件拿到截图,并且用canvas2html把图片转成base64格式,至于为什么要转成base64,就要想想拿到这个截图之后干什么了

然后问题又来了,这几个页面完全独立,要怎么传递东西呢?所以接下去要介绍的是chrome扩展页面间的通信。


Chrome扩展页面间的通信

在查阅这部分的资料时,还蛮头疼的。命令有点多,而且比较长,对于我这样的懒人来说简直是理不清。终于,很多东西不懂不懂,多看几遍也就摸出门道了。




接下来就把这几个发送和接收的方法写到各自的脚本中啦。注意发送消息到content Script,必须使用chrome.tabs.sendMessage。

至此,整个扩展插件的骨架都搭好了。
最前面是不是提到了Vue,好吧其实一开始我是想做个vue的demo来学习学习vue的,只是没想到这个扩展页面上的东西太简单,反而在学习Chrome扩展开发花了更多的时间。Vue.js的相关内容也有,就是太简单了,大家可以去看看源码。


问题


问题解决

对于截屏这个问题,终于找到了正确的方法。其实近在眼前,怪我没仔细看文档。


虽然使用html2canvas方法繁琐,但也帮助我明白了chrome扩展间的通信方法,因祸得福♪(^∀^●)ノ

文章TAG:chrome  扩展  插件  练习  Chrome扩展插件练习——书签管理  

加载全部内容

相关教程
猜你喜欢
大家都在看