chrome插件开发之:关于Chrome插件的架构的理解

Chrome插件的入口就是:manifest.json。
这里配置了整个插件所需要用到的东西,例如插件的名称和图标,插件的动作,和对应动作的执行的js文件等等。
Chrome插件有3个不同的运行环境:
1 首先是插件的运行环境。
这个运行环境包括popup运行和background.js的运行:
popup页面运行,这个运行的结果是你点插件图标直接显示的内容。通过”default_popup”: “popup.html”定义。
–>注意:如果你不点击图标,这个popup页面是不会执行的。
接着是background.js的运行环境。这个JS是插件启动的时候,chrome就自动开通一个空间来运行你这里所定义的js文件。注意:只要定义好了,插件启动就一定会执行!
它通过”background”: { “scripts”: [“background.js”] },定义。这个运行可以理解为是插件运行的时候就自动执行的脚本(但是和你所浏览的网页无关)。
下面会说到一个content script的运行环境。插件background的运行正是可以连接插件运行环境和content script的运行环境!通过一些特殊的对象方法,进行数据沟通。
2 接着是content script的运行环境。
这个运行环境尤为重要!因为它的存在,可以完全地很方便地干预你所浏览的页面!!做你想做的事情,例如自动购买等!
这个运行环境是比较特殊的,它可以完全访问您浏览的网页,但是又何您的网页无关的环境!(Content Script能访问DOM的内容,但却不是简单的直接嵌入到页面原本的脚本!)
这个脚本的执行时间点是,对应的页面已经加载完毕了,处于空闲的状态的时候,它就会悄悄地执行,做脚本所定义好的事情。例如自动刷新啊等等。
3 最后是您所浏览的页面的运行环境。
这个运行环境是原本页面访问的时候的运行环境。有DOM对象,也有本身页面自己写好的脚本文件。

理解了上面的3个运行环境,就可以做很多事情。
例如,我访问了一个页面,想将访问页面的内容记录下来,传到插件显示我所访问的历史纪录。
大概的实现逻辑是:定义一个content script来监控我所访问的页面,将这个页面的内容通过message发送到插件的background js去。
然后插件的popup页面,访问background js的内容,显示给用户看。

关于 “permissions”的定义的理解:
就是申请访问的权限。目前主要的作用是,当插件的运行环境需要访问一些资源,例如用XHR异步访问url获取资源等,都需要通过这里定义申请访问的权限!

备注:
另外,如果要在content_script环境中用到一些外部资源,URL需要变更!
例如,boostrap要用到字体文件:http://v3.bootcss.com/components/#top
chrome-extension://MSG_@@extension_id/images/main.png
原来:../fonts/glyphicons-halflings-regular.woff
要改为:
chrome-extension://MSG_@@extension_id/include/bootstrap/fonts/glyphicons-halflings-regular.woff
当前,前提必须要将这个文件载入到manifest.json文件的web_accessible_resources配置里面!否则木有权限访问这个资源的!

还有一定要说明的是,如果在插件的background运行环境执行content_script的js代码,必须要在background定义资源,否则是无法执行!
开始我以为这个js都已经在content_script已经有定义了,同一个插件里面执行应该可以直接执行才对。

个人觉得这篇文章写得很好!分享一下:
Chrome插件(Extensions)开发攻略:http://www.cnblogs.com/mfryf/p/3701801.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值