chrome浏览器扩展
来源:互联网 发布:弯曲法测杨氏模量数据 编辑:程序博客网 时间:2024/05/16 23:56
QQ群查看器--chrome浏览器扩展
源码及程序下载地址:http://pan.baidu.com/share/link?shareid=3636190804&uk=1678089569
关于如何创建一个最基本的 chrome扩展,就不细说了。可以参考:
360极速浏览器扩展开发文档:http://open.chrome.360.cn/extension_dev/overview.html
Chome浏览器扩展开发官方文档:https://developer.chrome.com/extensions/getstarted.html
下面说一下关键代码:
//popup.js
chrome.windows.getCurrent( function(currentWindow) {
chrome.tabs.query({active: true, windowId: currentWindow.id},
function(activeTabs){
chrome.tabs.executeScript(activeTabs[0].id, {file: "./get_group_list.js", allFrames: false});
});
});
}
这段代码在扩展页面加载将会执行。作用是获取当前窗口下的活动标签页面,注入javascript代码,执行。
chrome.windows.getCurrent() 获取当前活动浏览器窗口,一个浏览器窗口包含多个标签页,详细参数及用法参考: https://developer.chrome.com/extensions/windows.html#method-getCurrent
chrome.tabs.query() 根据参数查询标签页。详细参数及用法参考:
https://developer.chrome.com/extensions/tabs.html#method-query
由于获取QQ群列表需要在QQ页面执行 Javascript 代码,所以就需要向QQ页面注入Javascript代码并执行。Chome提供了一个chrome.tabs.executescript() 方法动态地向页面注入JavaScript脚本并执行。详细参数及用法参考:
https://developer.chrome.com/extensions/tabs.html#method-executeScript
用于在QQ页面执行码在get_group_list.js中,在此之前,我们还需要知道,如何获取用户所加的QQ群。当然,QQ用户需要先加入几个群,总得有群才能获取吧。呵呵。随便打开一个QQ群空间。在页面顶端就可以查看到用户所加的群。用Fiddler http调试工具抓取http包。分析得到
http://qun.qzone.qq.com/cgi-bin/get_group_list?callbackFun=_GetGroup&uin=453867443&random=0.18549695408314274&g_tk=1705493508
服务器返回json格式的数据,包含了用户所加的群信息。上面的地址中g_tk是一个关键的参数,没有这个参数获取不到数据。计算这个参数的代码在QQ群空间的页面中。
计算g_tk时需要一个Cookie (skey),下面的的代码是获取一个Cookie
var r = new RegExp("(?:^|;+|\\s+)"+name+"=([^;]*)");
var m=document.cookie.match(r);
return(!m?"":m[1]);
}
计算 g_tk
var hash=5381;
str = get_cookie("skey");
for( var i=0, len=str.length; i < len; ++i){
hash+=(hash<<5)+str.charCodeAt(i);
}
return hash&0x7fffffff;
}
这两段代码都可以在QQ群空间页面中查到,我把它提取了出来,稍作了修改。
有了这些就可以通过 ajax向腾讯服务查询QQ群了
// 定义一个回调函数
function _GetGroup_Callback(obj) {
// 向扩展送一个请求。
chrome.extension.sendRequest(obj);
}
var get_group_list_url = "http://qun.qzone.qq.com/cgi-bin/get_group_list?callbackFun=_GetGroup&uin=" + get_login_uin() +"&random=0.18549695408314274&g_tk=" + get_gtk();
xhr = new XMLHttpRequest();
xhr.open("GET", get_group_list_url);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
eval(xhr.responseText);
}
}
xhr.send();
由于返回的数据有一个回调函数,所以需要定义一个回调用,并用 eval 进行调用。
获取到了数据之后,就要把数据传回给扩展了,chrome提供了一个chrome.extension.sendRequest() 方法,可以向扩展发送消息。详细参数及用法参考:
在扩展中需要定义一个监听器,以便监听页面发来的消息。
chrome.extension.onRequest.addListener( function(obj){
// 显示群列表
show_group_list(obj);
});
显示获取到的数据就很简单了,会点html,css,javascript都会做的。不再说了。程序有个缺陷,只能在打开的QQ空间,QQ群空间,WebQQ页面下才能获取到数据,具体是因为需要用的这些页面的Cookie。
运行截图:
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- chrome浏览器扩展
- Chrome浏览器扩展
- [CoffeeBot] 安装Chrome浏览器扩展
- Google Chrome浏览器必备扩展
- Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
- Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
- Chrome浏览器扩展学习之 - 添加书签
- 谷歌Chrome浏览器扩展超过10000个
- Chrome(谷歌)浏览器扩展开发初探
- Google Chrome 浏览器扩展程序备用
- 个人常用的Chrome浏览器扩展程序
- 添加chrome浏览器扩展程序(插件)
- chrome浏览器常用扩展程序及插件
- Chrome浏览器如何运行扩展程序?
- chrome浏览器扩展postman安装使用
- Chrome浏览器等中的Axure扩展
- 【浏览器】Chrome获取扩展方法汇总
- Chrome浏览器扩展开发系列之二:Google Chrome浏览器扩展的调试
- OD根据API下断点调试程序
- Handler的用法总结
- RMAN 备份异机恢复 并创建新DBID
- Yii引入PHPExcel修改其自动加载方法
- Android 4.1拿什么跟WP8、iOS 6斗
- chrome浏览器扩展
- UIMenuController的使用,对UILabel拷贝以及定制菜单
- Linux下使用inotify监控文件动作
- STL---函数对象(仿函数)概述
- 关于 RMAN 备份 数据块 一致性的讨论
- java netty之一个write跟踪(数据发送)
- hadoop 命令
- Qt5下OpenGL程序的新写法
- UVaOJ10006 - Carmichael Numbers