当用户到达底部时在HTML页面中加载新内容非常受欢迎(FB,G +,Twitter),所以我想在XPages(使用Dojo)中实现它。查看SO(和附近)我发现有关JQuery和/或通用here和here以及here和here以及here和{{3的问题}}和here以及here和here以及here,仅举几例。
但是如何在Dojo中做到这一点?
答案 0 :(得分:4)
我不知道Dojo是如何做到的,但您可以使用纯JavaScript DOM API来完成它。
查看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()函数。