0

ajaxハッシュ変更イベントと履歴状態にjqueryBBQプラグインを使用しています。私の問題は、スクロール位置が保存されないため、戻るボタンを使用すると、スクロールバーがハッシュ変更前の位置に配置されず、戻るボタンが押される前と同じピクセル位置に配置されることです。これは多くの人にとって問題であり、Cookieの使用について言及している人もいますが、BBQプラグインを使用してこれを行う方法がわからないため、すべての助けをいただければ幸いです。理想的には、ページが通常どおりにナビゲートされたときにスクロールが一番上にあるようにしたいのですが、戻るボタンを押すと、スクロールはそのページ上の位置に配置されます。これは私のコードです:

$(function(){

var cache = {
    '': $('.content')
};

$(window).bind( 'hashchange', function(e) {
    var url = $.param.fragment();
    var scroll = $('#wrapper').scrollTop();
    $( '.contentarea' ).children( ':visible' ).hide();
    if ( cache[ url ] ) {
        cache[ url ].show();
    } else {
        $( '.content-loading' ).show();
        cache[ url ] = $( '<div class="pageURL"/>' )
        .appendTo( '.contentarea' )
        .load( url, function(){
            $( '.content-loading' ).hide();
        });
    }
})

$(window).trigger( 'hashchange' );

$('#btn-back').click(function(){
    parent.history.back();
    return false;
});
});

ありがとう。

4

1 に答える 1

0

目的の結果で問題を解決する簡単な方法を見つけました。

コンテンツをコンテナー div に直接ロードするのではなく、ロードされるページのテンプレート ファイル内で、独自のコンテナー div 内にページ コンテンツ全体をラップします。幅と高さを 100% にして、コンテンツが読み込まれるコンテナー div と同じサイズになり、新しいコンテナー div でオーバーフローを有効にします (元のコンテナー div でオーバーフローを非表示に設定するのが最適です)。

これを行うと、元のコンテナーの div にはスクロール位置がありませんが、テンプレート ファイル内の新しいコンテナーにはスクロール位置があり、それが、ページと共にブラウザー履歴に自動的に保持される div とスクロール位置です。これで、前後に移動しても新しいコンテナーの位置が保持され、ユーザーはページを離れる前の場所に正確に移動します。

;-)

于 2012-05-24T18:04:13.757 に答える