2012-05-09 13 views
2

ユーザーが一番下に来たときに新しいコンテンツをHTMLページに読み込むことは非常に一般的です(FB、G +、Twitter)ので、これもXPages(Dojoを使用する)でも実装したいと考えています。私はちょうど少数を示すために、jQueryの周りの質問および/または汎用herehereherehereherehereherehereherehereを見つけるように見て(と近くにあり)。ユーザーがDojoを使用して下にスクロールしたときに新しいコンテンツをロードしますか?

しかし、Dojoでどうしたらいいですか?

+0

「ちょうどいくつかの名前を付ける」。 –

答えて

2

残念ながら、私はニクラス答えにコメントすることはできませんが、彼の答えは正しい。私が変更することの1つは、特定の関数を呼び出す代わりに、下にスクロールした場合に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

関連する問題