当用户使用Dojo滚动到底部时加载新内容?

时间:2012-05-09 04:02:46

标签: javascript html dom dojo xpages

当用户到达底部时在HTML页面中加载新内容非常受欢迎(FB,G +,Twitter),所以我想在XPages(使用Dojo)中实现它。查看SO(和附近)我发现有关JQuery和/或通用herehere以及herehere以及here和{{3的问题}}和here以及herehere以及here,仅举几例。

但是如何在Dojo中做到这一点?

2 个答案:

答案 0 :(得分:4)

我不知道Dojo是如何做到的,但您可以使用纯JavaScript DOM API来完成它。

我在移动控件中做到了这一点。从http://www.openntf.org/Projects/pmt.nsf/downloadcounter?openagent&project=XPages%20Mobile%20Controls&release=4.5.0&unid=2D4F47CB07AAEE4086257887004ED6C5&attachment=MobileControls450.zip

查看MobileControlsLite.nsf(mView.xsp和mobileControls.js)

以下是我的应用中的一些代码:

function scrollingDetector() {
    ...

    var pos = window.pageYOffset;
    var max = document.documentElement.scrollHeight - document.documentElement.clientHeight;

    if (max - 80 < pos) {   
        onMoreButtonClick(...);
    }
}   

setInterval(scrollingDetector, 500);    

答案 1 :(得分:2)

不幸的是我无法对Niklas的回答发表评论,但他的回答是正确的。我要改变的一件事是在你滚动到底部而不是调用特定函数的情况下发出Dojo事件。

var scrollingDetector = (function() {
    var max = calculateScrollHeight();

    return function(){
        if (max < window.pageYOffset) {   
            max = calculateScrollHeight();
            dojo.publish('/newsApp/onScrollBottom');
        }
    }
    function calculateScrollHeight(){
        return (document.documentElement.scrollHeight - document.documentElement.clientHeight) - 80; 
    }
})();   

setInterval(scrollingDetector, 500);    

(为了表现的利益,我还冒了一点点重构的自由,因为当我们到达页面底部时我们只需要重新计算高度。)

这将允许您在代码中的其他位置挂钩此事件,而无需编辑此代码段或覆盖onMoreButtonClick()函数。