@会网络的老鼠

涂飞平的博客空间

虾米音乐自动签到的Chrome Extension

3 年前 0

第一次使用虾米音乐是老史同学告诉我的!前段时间老史同学在QQ群里说他总是忘记虾米签到,如果有个自动签到工具就简单了。当时考虑写一个Chrome的Extension来完成这个功能应该比较简单,所以就开始了解Chrome Extension的接口和编写方式。
总体说来,Chrome Extension的编写比较简单,一个资源描述文件manifest.json,根据Extension类型的不同可以选择browserAction和pageAction两种模式。
由于这个功能是属于浏览器的功能,所以这里我选用了browserAction方式,并定义了一个简单的条件设置界面:

"browser_action": { // 按钮描述,表明扩展是一个browserAction扩展(还有pageAction)
"default_title": "老史XIAMI签到", // 扩展按钮标题,作为按钮提示出现
"default_icon": "icon.png", // 按钮的图标,这里我随便找了一个,效果还行,有兴趣的话,老史可以搞个自己的头像 :-)
"default_popup": "popup.html"
}
每个Extension的业务逻辑都是由background来定义的:
"background": {//后台代码,主要与chrome本身进行交互
"page": "baction.html" // 也可以"scripts": "["xxx.js"]
},
而真正嵌入到页面的脚本是定义在content_scripts中的:
	"content_scripts": [{ // 页面内容代码,与符合条件的界面进行交互,类似油猴脚本就写这里
"matches": ["http://*.xiami.com/*"], // 不是什么页面都加入脚本的,只针对虾米网进行加载
"js": ["js/jquery-2.0.3.js", "js/caction.js" ]
}],
这些基础设施的作用和范围需要分清楚:background是没有界面的,它的脚本或者页面都是browserAction本身的逻辑,contentScripts是会嵌入到目标页面的(这样说其实不准确,因为它只是共享了目标页面的DOM,而不能使用目标页面的脚本和其他资源)。
pageAction和browserAction的区别在于:browserAction是属于整个browser环境的,而pageAction仅仅属于某个页面(它们的脚本初始化代码执行的方式不一样,browserAction在浏览器打开后仅会执行一次,而pageAction的初始化代码会在每个tab打开的时候执行一次,context也不一样)。

extension.jpg

整个Extension的代码提交到http://git.oschina.net/sunnytu/XiaMiAutoSign
有兴趣可以去看看。

由于Chrome Extension开发文档被墙了,好在360的浏览器(极速模式)使用的是Chrome内核,而且其Extension也是采用Chrome的机制,它们翻译了Chrome Extension开发文档(虽然说是“360极速浏览器应用开放平台”,但是,它其实就是一个Chrome Extension开发平台),大家可以参考一下。
http://open.chrome.360.cn/extension_dev/overview.html

编写评论