2012-05-09 59 views
2

当用户到达底部时,在HTML页面中加载新内容非常流行(FB,G +,Twitter),所以我想在XPage(它使用Dojo)中实现它。展望对SO(及附近),我发现周围的JQuery问题和/或一般herehereherehereherehereherehereherehere,只是仅举几例。用户使用Dojo滚动到底部时加载新内容?

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

+0

'只是举几个例子.'对我来说这似乎不是'少数'! –

回答

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()函数。

+0

Thx。欣赏小费 – stwissel

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);  
+0

Thx。现在我的清单上的任务:“自动扩展视图控制” – stwissel

相关问题