原文作者:西安鲲之鹏
原文链接:http://www.site-digger.com/html/articles/20150718/94.html
现在使用Ajax技术的网站越来越多,一个常见的应用就是动态分页:当列表页面滚动底部时,下一页的内容被动态加载(e.g. Facebook、Twitter、 Pinterest)。
和常规的分页方式相比,动态分页往往隐藏了数据总条数和页面总数,这样就增加了我们对采集成本和周期的评估的难度。
鲲鹏数据的技术人员给出了下面这段JS代码,可以帮助我们测试出列表的总页数。可以在Chrome的调试工具(F12)或者火狐的Firebug控制台内执行,效果是每隔1秒尝试将页面滚动到底部(触发加载新的内容),直至页面高度不再发生变化。
- varinterval=1000;//间隔多少毫秒尝试滚动到底部一次
- varpage=0;//初始页码
- varlast_body_height=0;//上一次操作后页面的高度
- functionscroll_to_bottom(){
- scroll(0,document.getElementsByTagName('body')[0].scrollHeight);
- varcurrent_body_height=document.getElementsByTagName('body')[0].scrollHeight;//@R_502_340@高度
- if(current_body_height!=last_body_height){
- page+=1;
- console.log('Loadedpage'+page);
- }
- else{
- console.log('Pagenotchanged,page'+page);
- }
- last_body_height=document.getElementsByTagName('body')[0].scrollHeight;//新的页面高度
- setTimeout('scroll_to_bottom()',interval);
- }
- scroll_to_bottom();
下面是我们对雅虎问答的问题列表页的测试结果截图,可以看出最大可见页数大约是前100页。