返回首頁 

Tieba Preload

贴吧预加载,自动加载下一页内容,同时附带消灭贴吧自带 Lazy Load 功能

< Feedback on Tieba Preload

Question/comment

Posted: 13-06-2014
Edited: 14-06-2014

「只看楼主」判断失效

点击只看楼主,加载的下一页并不是只看楼主。看了下代码,你是用 see_lz=PageData.special.lz_only, 进行判断,我在2个页面(一个只看楼主、一个全部)测试,结果都为0。

目测可根据地址中的 ?see_lz=1 进行判断,不知道作者是否有更好的方法。

Posted: 13-06-2014

CC说这个脚本暂停维护了

Posted: 14-06-2014
Edited: 14-06-2014
CC说这个脚本暂停维护了

好吧,我自己改下。可恶的 KeeFox 自动填写,标题都变成这样,改都不能改。。。

Posted: 14-06-2014

贴吧现在几乎全程使用 Ajax,导致现在基本没什么比较好的方法判断,点击只看楼主后刷新了一遍 PageData.special.lz_only 就变为 1 了……
其实现在最大的问题是贴吧的楼中楼问题,如果不能解决楼中楼问题,这个脚本还是无法继续使用(因为翻页后剩下的楼层的楼中楼便不会加载……)

Posted: 14-06-2014

好吧,我自己改下。可恶的 KeeFox 自动填写,标题都变成这样,改都不能改。。。

我就说呢,这个标题真带感

Posted: 14-06-2014
Edited: 14-06-2014
贴吧现在几乎全程使用 Ajax,导致现在基本没什么比较好的方法判断,点击只看楼主后刷新了一遍 PageData.special.lz_only 就变为 1 了……
其实现在最大的问题是贴吧的楼中楼问题,如果不能解决楼中楼问题,这个脚本还是无法继续使用(因为翻页后剩下的楼层的楼中楼便不会加载……)

没太明白你的意思,在加载的第4页还是有楼中楼。

我对贴吧要求不高,在看一些很长的帖子时,只看楼主这点就很重要。简单修改了下,使用正常。

Posted: 14-06-2014
CC说这个脚本暂停维护了
好吧,我自己改下。可恶的 KeeFox 自动填写,标题都变成这样,改都不能改。。。

帮你想了个差不多的标题(?)

Posted: 14-06-2014
CC说这个脚本暂停维护了
好吧,我自己改下。可恶的 KeeFox 自动填写,标题都变成这样,改都不能改。。。
帮你想了个差不多的标题(?)

非常感谢。

Posted: 15-06-2014
贴吧现在几乎全程使用 Ajax,导致现在基本没什么比较好的方法判断,点击只看楼主后刷新了一遍 PageData.special.lz_only 就变为 1 了……
其实现在最大的问题是贴吧的楼中楼问题,如果不能解决楼中楼问题,这个脚本还是无法继续使用(因为翻页后剩下的楼层的楼中楼便不会加载……)

我试的几个网页,PageData.special.lz_only 一直为 0。

随手还改了个地方

	function whether_fetching(){cur_page = PageData.pager.cur_page;next_page=cur_page+1;see_lz = (location.href.indexOf('?see_lz=1') == -1 ? 0 : 1);

可以使用 underscore.js 的 throttle 来监视滚动节省资源。

        _.throttle = function(func, wait, options) {var context, args, r###lt;var timeout = null;var previous = 0;options || (options = {});var later = function() {previous = options.leading === false ? 0 : new Date;timeout = null;r###lt = func.apply(context, args);};return function() {var now = new Date;if (!previous && options.leading === false) previous = now;var remaining = wait - (now - previous);context = this;args = arguments;if (remaining <= 0) {clearTimeout(timeout);timeout = null;previous = now;r###lt = func.apply(context, args);} else if (!timeout && options.trailing !== false) {timeout = setTimeout(later, remaining);}return r###lt;};};var throttled = _.throttle(scroll, 100);$(window).scroll(throttled);
Posted: 15-06-2014
Edited: 15-06-2014

楼上的已无法编辑,后面才发现改的有错误。

改了如下几个地方,不知道是否还有问题。

前面的 see_lz

see_lz = (location.href.indexOf('?see_lz=1') == -1 ? 0 : 1),

function preload_listener(){if(cur_page!=total_page){//console.log('aaa');//window.onscroll=function(){ // 改用定时器以节省资源var throttleId  = _.throttle(whether_fetching, 500);window.addEventListener('scroll', throttleId, false);// loader=setInterval(function(){whether_fetching()},1000);//}}}

whether_fetching 函数加了一段

if(cur_page <  total_page){loading=true;if(PageData.product=='frs') {cur_page=location.href.match(/pn=(\d+)/)?parseInt(location.href.match(/pn=(\d+)/)[1]):0;next_page=cur_page+50;} else if(PageData.product=='pb'&&PageData.pager){cur_page = PageData.pager.cur_page;next_page=cur_page+1;see_lz = (location.href.indexOf('?see_lz=1') == -1 ? 0 : 1);}fetch_next_page();}
Posted: 15-06-2014

@864907600cc

Posted: 16-06-2014

好吧我已经发布修复版本了才看到 _(:з」∠)_
两年前写的那个雏形我也是监听 scroll,但是资源占用实在有点大,所以这个版本就用了定时器,有时间我再看看你的代码

Posted: 16-06-2014
好吧我已经发布修复版本了才看到 _(:з」∠)_
两年前写的那个雏形我也是监听 scroll,但是资源占用实在有点大,所以这个版本就用了定时器,有时间我再看看你的代码

已更新

Post reply

Sign in to post a reply.