遅延読み込みについて質問しています。
答えにはサーバー側が含まれている必要があります。あなたの質問は、使用しているサーバー側言語のタイプを指定していません。私の答えでは、ランダムなブログ投稿をモックするためにいくつかの基本的なPHPコードを使用します。
遅延読み込みとは、ユーザーが表示できるものだけを読み込み、後で必要に応じてさらにデータを読み込むことを意味します。
データの読み込みとは、サーバーにデータを要求することを意味します。これには通常AJAXが関係しますが、必ずしもそうとは限りません。(おそらくAJAXを使用できますが)。JQueryには素晴らしいajaxインターフェースがあります。
最大の問題は、次のロードをトリガーするもの、つまりすべてのプラグインです。
Tgrのアドバイスを受けて、ウェイポイントを使用して遅延読み込みを実装しました。Tgrが提案したように、遅延読み込みにウェイポイントチュートリアルを使用しました(Tgrにもっとポイントを与えてください)。
あなたは私のサイトで私の実装を見ることができます
私が作ったのは、タイトルを変更した模擬ブログ投稿でした。ユーザーが十分に下にスクロールするたびに、サーバーからより多くの投稿を取得します。
ソースのダウンロードリンクを追加したので、ダウンロードして試してみることができます。走るだけmain.html
でいいです。
このファイルは、ランダムなタイトルmore_posts.php
の投稿を生成します。lorem ipsum
(ページをスクロールするには、偽のコンテンツが必要でした)。
こんな感じ
<h1> This is post number <?php echo uniqid("",true)?> </h1>
<div style="color:red">
Lorem ipsum dolor .... Quisque ut pretium nibh.
</div>
<div style="color:blue">
Lorem ipsum dolor .... Quisque ut pretium nibh.
</div>
ご覧のとおり、私が持っている唯一のPHPコードは、タイトルにランダムなものを追加することです。
ブログにはすでに25以上の投稿があるので、これは見覚えがあるはずです。
本当の論理はそこにありmain.html
ます-HTML部分はそのように見えます
<section id="container">
</section>
<footer>
<nav>
<ul>
<!-- Hijack this link for the infinite scroll -->
<li class="more"><a href="more_posts.php" title="Traditional navigation link">Next Page</a></li>
</ul>
</nav>
</footer>
アイデアはsection
、最初のいくつかの投稿を含むものであり、ページをスクロールすることができます。下部にmore
リンクがありfooter
、JavaScriptが無効になっている場合は、通常の「次の」リンクとして機能する必要があります。
Waypointはこのリンクを使用して、次のロードをトリガーします。リンクが画面に表示されようとしているときはいつでも、ajaxを使用して次の投稿を自動的に取得します。
したがって、JavaScriptの部分は次のようになります。
$(document).ready(function() {
function loadMorePosts( callback ){
$.get($('.more a').attr('href'), function(data) {
$('#container').append($(data));
if ( typeof(callback) == "function" ){ callback(); }
})
}
loadMorePosts();
var $footer = $('footer');
var opts = {
offset: '100%'
};
$footer.waypoint(function(event, direction) {
$footer.waypoint('remove');
loadMorePosts( function(){ $footer.waypoint(opts);} );
}, opts);
});
この関数は、のより単純な構文であるloadMorePosts
メソッドを呼び出します。リンクのhref属性と同じURLを使用します。私の例では、href属性は「more_posts.php」を指しています。$.get
$.ajax({type:'GET' .. })
デモが読み込まれると、コンテンツは完全に空になっているので、先に進んで、表示したい最初の投稿を取得します。次に、ウェイポイントにフッターを聞くように指示します。フッターが近くにあるときはいつでも、さらに投稿を取得します。
ウェイポイントをフッターにバインドするaをもう一度実行$footer.waypoint('remove')
して渡すというトリッキーな部分があります。これは単なる技術です。ウェイポイントでは、HTMLをさらにフェッチするときにトリガーを削除する必要があります。そうしないと、ページがおかしくなる可能性があります。callback
loadMorePosts
これは多かれ少なかれそれです。
私はこれをできるだけ単純にしようとしましたが、1つの答えでカバーすることは大きな問題です。それで、私が物事を片付けるためにもっとできるかどうか私に知らせてください。