Tieba Preload

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

< Feedback on Tieba Preload

Question/comment

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

「只看楼主」判断失效

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

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

文科Mod
§
Posted: 2014-06-13

CC说这个脚本暂停维护了

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

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

864907600ccAuthor
§
Posted: 2014-06-14

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

文科Mod
§
Posted: 2014-06-14

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

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

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

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

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

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

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

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

非常感谢。

§
Posted: 2014-06-15
贴吧现在几乎全程使用 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, result;
            var timeout = null;
            var previous = 0;
            options || (options = {});
            var later = function() {
                previous = options.leading === false ? 0 : new Date;
                timeout = null;
                result = 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;
                    result = func.apply(context, args);
                } else if (!timeout && options.trailing !== false) {
                    timeout = setTimeout(later, remaining);
                }
                return result;
            };
        };

        var throttled = _.throttle(scroll, 100);
        $(window).scroll(throttled);
§
Posted: 2014-06-15
Edited: 2014-06-15

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

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

前面的 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();
}
文科Mod
§
Posted: 2014-06-15

@864907600cc

864907600ccAuthor
§
Posted: 2014-06-16

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

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

已更新

Post reply

Sign in to post a reply.