javascript – 使用Tumblr无限滚动与另一个脚本

前端之家收集整理的这篇文章主要介绍了javascript – 使用Tumblr无限滚动与另一个脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在这里使用cody sherman的javascript代码http://codysherman.com/tools/infinite-scrolling/code

我还使用一个简单的jquery脚本来动态更改包含tumblr帖子的div的背景图像.

jquery代码工作正常但我需要一种方法来在无限滚动脚本用新帖子更新时再次调用函数.我猜他们互相交谈的方式.

你可以在这里看到这个页面http://hypergeography.tumblr.com/
(它还没有使用无限滚动.但它确实有改变背景图像的脚本.)

任何帮助,将不胜感激.

最佳答案
如果你觉得足够安全,你肯定可以进入该代码(它不长)并在onreadystatechange部分添加一些逻辑.一旦Ajax调用完成,就会触发此事件.如果你勾选它,你可以轻松地添加一些东西来与你的代码交谈.

另一种方法是劫持XMLHttpRequest,这样一旦调用了send()方法,就可以附加自己的事件监听器来监视“load”事件的请求.请求完成后,您可以调用自定义函数.这可以这样做:

XMLHttpRequest.prototype.originalSend=XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send=function(s){
    this.addEventListener('load',function(){
        //CALL YOUR CODE HERE
    },false);
    this.originalSend(s);
}

或者,您可以劫持onreadystatechange函数添加一些自己的逻辑:

XMLHttpRequest.prototype.originalSend=XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send=function(s){
    if(this.onreadystatechange){
        var oldORSC=this.onreadystatechange;    
    }
    this.onreadystatechange=function(){
        if (this.readyState==4 && this.status==200){ //a successful request
                //CALL YOUR CODE HERE
        }
        if(oldORSC){
            oldORSC();
        }
    }
    this.originalSend(s);
}

当然,如果你想支持IE,你必须使用它们用于AJAX的ActiveXObject做类似的事情.但我不使用它所以我不能给你任何例子.

编辑:这假设您的页面仅为此目的拨打电话.如果您有其他AJAX调用,则需要添加逻辑以确定正在使用哪个调用.为此,您可以挂接到open()方法并检查URL或参数或任何特定信息将帮助您确定调用的位置,然后相应地修改请求.

另外:确保在任何其他javascript之前,这些劫持被称为FIRST.

猜你在找的jQuery相关文章