米落,2009年9月12日
在上篇中,我们提出了自定义滔滔插件显示内容的方法,是使用的 jQuery 更改滔滔官方显示的方法,在结尾我们又发现了其插件其实本身就提供了滔滔留言的数据内容,显示格式只是后期 Javascript 输出的,由此我们就可以在获取其数据后,自定义输出,也就是使用自己的 doApi 函数.

本地页面调用保存本地的 taotaoapi.js 显示

滔滔留言数据,可以看到是一段 Javascript 脚本
数据连接地址是类似如下的地址:
http://www.taotao.com/cgi-bin/msgj?qq=215617543&num=20&t=0
可以看到这段地址以Get 方法传递了三个参数 qq , num , t .
qq , 代表要显示的QQ号码.
num , 表示显示的条数,默认为五条,最多二十条,超过二十条则就为五条.
t , 表示显示类别,可为 0 或 1, 0代表只显示自己发表的滔滔留言, 1表示也显示自己回复好友的滔滔留言.
数据显示参数就是这些,在 doApi 函数中,传递的是一段 js 脚本.格式化后显示的效果就是这个
doApi({
"posts": [{
"cn": "觉得自己好失败,被院队除名了,最后二选一自己还是败在了跳投上.",
"id": "8905730807",
"sr": 0,
"time": "2,37"
},
{
"cn": "昨天放孔明灯,热气上升,很好玩.今天中午班赛,下午训练,被通知明天要早上去上薪酬管理的自考.",
"id": "8873023416",
"sr": 0,
"time": "3,21"
},
{
"cn": "她的生日,送花 19 Rose.",
"id": "8816527141",
"sr": 0,
"time": "7,2009-09-10 14:15:08"
},
{
"cn": "自考复习开始",
"id": "8732850417",
"sr": 0,
"time": "7,2009-09-08 11:32:43"
},
{
"cn": "1.2.3 我们都是木头人",
"id": "8715115602",
"sr": 3,
"time": "7,2009-09-07 21:22:21"
}],
"ret": 0,
"total": 373,
"type": 0,
"ui": {
"lrank": 0,
"name": "米落",
"qq": 215617543,
"rank": 0,
"rec": "",
"usn": 8810022
}
})
上面的数据对象以及属性相信大家一眼就能看出是什么作用.我们就是要解析这些数据,然后拼接 HTML 标记最后 document.write 即可.由于在官方的dkapi.js 文件中已经提供了许多功能,我就直接拿来复用了,只是稍做修改即可.
将原文件 166 行更改为下面显示,可以去除 "更多滔滔" 和 滔滔Logo.
htm = '<div>' + '<ul id=' + taotao_pane_id + ' style="margin-bottom:5px">' + '</ul>' + '<table cellpadding="0" cellspacing="0" border="0" width="100%"></table>' + '</div>';
将原文件 120 行的 if 块删除,即可去除时间显示上的链接.
if (parseInt(data.pqq) > 0) {
a.href = 'http://www.taotao.com/v1/reply/t.' + data.pid + '/u.' + data.pqq;
} else {
a.href = 'http://www.taotao.com/v1/reply/t.' + data.id + '/u.' + qq;
}
修改时间的字体大小.
a.style.fontSize = "10px";
最终 doApi 函数
function doApi(obj) {
if (obj.ret != 0) {
pane.innerHTML = "对不起!暂时无法获取滔滔的唠叨,请稍候重试...";
return;
}
var qq = obj.ui.qq,
name = obj.ui.name,
usn = obj.ui.usn,
rank = obj.ui.rank,
lrank = obj.ui.lrank,
rec = obj.rec;
var arr = obj.posts,
i = 0,
data, pane = LL(taotao_pane_id),
li,
span,
a,
bD = false;
for (i = 0; i < arr.length; i++) {
data = arr[i];
li = LK("li");
li.style.wordBreak = "break-all";
li.style.height = "auto";
li.style.overflowY = "auto";
if (obj.type == 1) {
a = LK('a');
a.style.marginRight = "8px";
a.innerText = data.nm;
a.textContent = data.nm;
a.href = "http://www.taotao.com/v1/space/" + data.qq;
li.appendChild(a);
if (data.pqq) {
li.appendChild(document.createTextNode("@"));
a = LK('a');
a.style.marginRight = "8px";
a.innerText = data.pnm;
a.textContent = data.pnm;
a.href = "http://www.taotao.com/v1/space/" + data.pqq;
li.appendChild(a);
}
}
span = LK("span");
if (data.sr == 10) {
span.innerHTML = LE(data.cn, "_blank");
} else if (data.sr == 9) {
LI(data.cn);
var cxlen = g_cximg.length;
span.innerHTML = g_ubbcon + ' <a target="_blank" href="http://www.taotao.com/caixin.shtml?qq=' + qq + "&tid=" + data.id + '">点击查看彩信</a>';
} else {
span.innerHTML = LF(LG(data.cn, "_blank"));
}
li.appendChild(span);
span = LK("span");
span.style.marginLeft = "8px";
a = LK('a');
a.style.color = "#929091";
a.style.fontSize = "10px";
a.innerHTML = LJ(data.time);
span.appendChild(a);
li.appendChild(span);
pane.appendChild(li);
}
现在我们的工作就只剩下把显示 dkapi.js 文件的路径改为自己的即可. 各位可以自定义实现更多更丰富的显示方式,其实用了这些数据我们完全可以做自己的 Flash 版, 图片显示版. 并且由于 JS 数据是实时的,所以比官方的都还要更新的即时,剩下的工作就交给大家自己去完善吧.
Tags: JavaScript
分类: Programer | 评论:2 | 浏览:
相关文章:
网站目录
最近发表