【问题标题】:Using Tumblr infinite scrolling with another script将 Tumblr 无限滚动与另一个脚本一起使用
【发布时间】:2011-08-16 07:05:45
【问题描述】:

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

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

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

您可以在此处查看页面:http://hypergeography.tumblr.com/ (它还没有使用无限滚动。但它确实有更改背景图像的脚本。)

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery tumblr infinite-scroll


    【解决方案1】:

    如果您觉得足够安全,您肯定可以进入该代码(一点也不长)并在 onreadystatechange 部分添加一些逻辑。一旦 Ajax 调用完成,就会触发此事件。如果你喜欢它,你可以很容易地添加一些东西来和你的代码对话。

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

    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 或参数或任何特定信息将帮助您确定调用的去向,然后相应地修改请求。

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

    【讨论】:

    • 如果这能解决您的问题,请告诉我们。另外,在我的回答中,我说错了......您不必在所有其他 javascript 之前调用此代码,就在无限滚动代码之前。
    • OK...我现在正在正确的时间触发一个新功能。
    • 我很想在您的网站上看到这一点,因为它现在看起来太棒了。艺术品令人惊叹!当您使用新代码更新该页面时,请告诉我。是在您发布的原始网址吗?
    • 好的...我已经成功了!非常感谢您的帮助和符号! hypergeography.tumblr.com
    猜你喜欢
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多