我写了以下一小段代码,用于“预读”(或者说“获取”)贴吧里贴子的后面若干多页的内容(确切的说是后面页的“楼层”的内容)。如果不好理解的话,换个说法:
目前在贴吧中看帖子,一页只能看30楼。现在用这个脚本,可以自动追加31至100楼的内容(其内容来自与第2页、第3页等...),至30楼的下面。1至100楼的内容,均在当前打开的贴子的页面内显示,但是页面的其他布局不变。这样一来看各种直播贴子、连载的贴子就很爽啊,有木有?现在有个问题是:
内容是能看了,但是无法对某个楼层进行操作(例如:回复此楼层)。请问如何解决?function getPostList(strWholeHTML)
{//用这个函数,把需要的内容,从ajax返回的结果中取出来
if(strWholeHTML==null||typeof(strWholeHTML)!="string"||strWholeHTML.length<=0)return "";
var i,j,k;
var strToFind="\"j_p_postlist\"";//找起始位置用的特征字符串
i=strWholeHTML.indexOf(strToFind);
if(i<=0)return "";
i+=strToFind.length+2; strToFind="<div class=\"p_thread thread_theme_4\"";//找终止位置用的特征字符串
j=strWholeHTML.indexOf(strToFind);
if(j<=0||i>=j)return ""; strWholeHTML=strWholeHTML.substring(i,j);
j=strWholeHTML.lastIndexOf("</div>");
return strWholeHTML.substring(0,j);
}//调用ajax实现关键功能
function AppendAllTopic(strTopicID,iStartPage,iHowManyPages,bAsync,bOnlySeeLZ)
{
var iPage;
var iOSLZ=(bOnlySeeLZ?1:0);
var strData;
if(iStartPage<=0)iStartPage=1;
for(iPage=0;iPage<iHowManyPages;iPage++,iStartPage++)
{
strData='see_lz='+iOSLZ.toString()+'&pn='+iStartPage.toString();
$.ajax({
type:'get',
async:bAsync,
url:'/p/'+strTopicID,
data:strData,
dataType:'html',
success:function(msg)
{
var str=getPostList(msg);
if(str.length>0)
document.getElementById("j_p_postlist").innerHTML+=str;
},
error:function(){
//ajax提交失败的处理函数!
alert("发生了错误!相关URL地址:\r\n"+"/p/"+strTopicID+"/"+strData);
iPage=iHowManyPages+1;//设置出错时跳出循环的条件。
}
});
}
}
//在这里开始执行“预读”功能
//先随便打开任意一个帖子(在这里是http://tieba.baidu.com/p/2252324434)。然后就可以执行下面这一句代码了。
AppendAllTopic("2252324434",2,3,false,true);//获取帖子2256257913的,从第2页开始,
//连续3页的只看楼主(最后一个参数为true)的帖子。为了保证帖子的顺序,
//第4个参数为false,表示使用同步获取的方法。
//
如何运行这些代码?
这段代码,需要用浏览器的“开发者工具”,使用其中的“脚本”功能,在当前页面上运行和调用。并且这段代码使用了jQuery(不过贴吧的页面里面都有)PS:使用IE或遨游3浏览器的,先随便打开贴吧任意一个帖子。然后按下F12,会打开一个“开发者工具”的窗口。在里面寻找 “脚本标签(IE浏览器)” 或 “控制台(遨游3)”并点击,在这里,复制粘贴JS脚本的内容之后,就可以看到效果了。
JavaScript浏览器
目前在贴吧中看帖子,一页只能看30楼。现在用这个脚本,可以自动追加31至100楼的内容(其内容来自与第2页、第3页等...),至30楼的下面。1至100楼的内容,均在当前打开的贴子的页面内显示,但是页面的其他布局不变。这样一来看各种直播贴子、连载的贴子就很爽啊,有木有?现在有个问题是:
内容是能看了,但是无法对某个楼层进行操作(例如:回复此楼层)。请问如何解决?function getPostList(strWholeHTML)
{//用这个函数,把需要的内容,从ajax返回的结果中取出来
if(strWholeHTML==null||typeof(strWholeHTML)!="string"||strWholeHTML.length<=0)return "";
var i,j,k;
var strToFind="\"j_p_postlist\"";//找起始位置用的特征字符串
i=strWholeHTML.indexOf(strToFind);
if(i<=0)return "";
i+=strToFind.length+2; strToFind="<div class=\"p_thread thread_theme_4\"";//找终止位置用的特征字符串
j=strWholeHTML.indexOf(strToFind);
if(j<=0||i>=j)return ""; strWholeHTML=strWholeHTML.substring(i,j);
j=strWholeHTML.lastIndexOf("</div>");
return strWholeHTML.substring(0,j);
}//调用ajax实现关键功能
function AppendAllTopic(strTopicID,iStartPage,iHowManyPages,bAsync,bOnlySeeLZ)
{
var iPage;
var iOSLZ=(bOnlySeeLZ?1:0);
var strData;
if(iStartPage<=0)iStartPage=1;
for(iPage=0;iPage<iHowManyPages;iPage++,iStartPage++)
{
strData='see_lz='+iOSLZ.toString()+'&pn='+iStartPage.toString();
$.ajax({
type:'get',
async:bAsync,
url:'/p/'+strTopicID,
data:strData,
dataType:'html',
success:function(msg)
{
var str=getPostList(msg);
if(str.length>0)
document.getElementById("j_p_postlist").innerHTML+=str;
},
error:function(){
//ajax提交失败的处理函数!
alert("发生了错误!相关URL地址:\r\n"+"/p/"+strTopicID+"/"+strData);
iPage=iHowManyPages+1;//设置出错时跳出循环的条件。
}
});
}
}
//在这里开始执行“预读”功能
//先随便打开任意一个帖子(在这里是http://tieba.baidu.com/p/2252324434)。然后就可以执行下面这一句代码了。
AppendAllTopic("2252324434",2,3,false,true);//获取帖子2256257913的,从第2页开始,
//连续3页的只看楼主(最后一个参数为true)的帖子。为了保证帖子的顺序,
//第4个参数为false,表示使用同步获取的方法。
//
如何运行这些代码?
这段代码,需要用浏览器的“开发者工具”,使用其中的“脚本”功能,在当前页面上运行和调用。并且这段代码使用了jQuery(不过贴吧的页面里面都有)PS:使用IE或遨游3浏览器的,先随便打开贴吧任意一个帖子。然后按下F12,会打开一个“开发者工具”的窗口。在里面寻找 “脚本标签(IE浏览器)” 或 “控制台(遨游3)”并点击,在这里,复制粘贴JS脚本的内容之后,就可以看到效果了。
JavaScript浏览器
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货