我写了以下一小段代码,用于“预读”(或者说“获取”)贴吧里贴子的后面若干多页的内容(确切的说是后面页的“楼层”的内容)。如果不好理解的话,换个说法:
目前在贴吧中看帖子,一页只能看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浏览器

解决方案 »

  1.   

    我探查了一下,页面上的 document.onreadystatechange 和 document.body.onload的值都是null。然后看到了一些$(document).ready(function(){...})。如何查看已经使用jQuery绑定的 事件处理函数 的内容??
      

  2.   

    我想“查看已经使用jQuery绑定的 事件处理函数 的内容”,是因为$(document).ready(function(){...})调用在多个地方出现并使用。我能看到的地方,并不是我需要找的内容。所以我希望看到所有的$(document).ready所绑定的事件处理函数的内容。