Javascript 与另一个脚本一起使用Tumblr无限滚动

Javascript 与另一个脚本一起使用Tumblr无限滚动,javascript,jquery,tumblr,infinite-scroll,Javascript,Jquery,Tumblr,Infinite Scroll,我在这里使用cody sherman的javascript代码: 我还使用一个简单的jquery脚本来动态更改保存tumblr文章的div的背景图像 jquery代码工作正常,但我需要一种方法在无限滚动脚本更新为新帖子时再次调用该函数。我想这是他们互相交谈的一种方式 您可以在此处看到该页面: (它还没有使用无限滚动。但它确实有更改背景图像的脚本。) 任何帮助都将不胜感激。如果您感到足够安全,您肯定可以进入该代码(它一点也不长)并向onreadystatechange部分添加一些逻辑。一旦Ajax

我在这里使用cody sherman的javascript代码:

我还使用一个简单的jquery脚本来动态更改保存tumblr文章的div的背景图像

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

您可以在此处看到该页面: (它还没有使用无限滚动。但它确实有更改背景图像的脚本。)


任何帮助都将不胜感激。

如果您感到足够安全,您肯定可以进入该代码(它一点也不长)并向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之前,先调用这些劫持。

让我们知道这是否解决了您的问题。另外,在我的回答中,我说错了…你不必在所有其他javascript之前调用此代码,就在无限滚动代码之前。好的。。。我现在在正确的时间触发了一个新的功能。我很想在你的网站上看到这个功能,因为它现在看起来太棒了。这件艺术品太棒了!请让我知道当你用新的代码更新页面。它是你发布的原始url吗?好的。。。我让它工作了!非常感谢您的帮助,安培生!