1

主にブログページとフォリオページを切り替えるために、サイトの各ページをロードするために ajax を使用している Web サイトを持っています。Folio ページでは、サブナビゲーションのリンクで localScroll を使用しています。

Folio ページが読み込まれた最初のページである場合、これはすべて正常に機能します。サイトの他のページのいずれかが最初に読み込まれ、Folio ページに切り替えると、localScroll が機能しなくなります。最初に Folio ページを読み込んで、別のページに切り替えても問題ありません。

私は逆方向に作業しましたが、window.history.pushState (ページの URL を変更する) を使用した場合にのみ問題が発生するようです。それを削除して他のすべてを残すと、localScroll が再び機能します。

localScroll に付属している ajax デモに window.history.pushState を追加するだけでも試してみましたが、そこでも発生します。

window.history.pushState が localScroll を壊している可能性がある理由はありますか?とにかくそれを再び機能させる方法はありますか?

以下に、コードのトリミングされたバージョンを含めました。

$(document).ready(function(){

    $('#nav-subnav').localScroll({
        lazy: true,
        target: scrolltarget
    });

    $(document.body).on('click', '#nav a', function() {
        pageLoad(this);
        return false; 
    });

});

function pageLoad(t){        
    //e.preventDefault();
    var $link = $(t).prop('href');
    if ($link != window.location.href) {
        window.history.pushState({path:$link},'',$link);
        $('#content').add('#nav-submenu').animate({opacity: 0},500, function() {
            $.ajax({
                url: $link,
                success: function(content) {
                    var newTitle = $(content).filter('title').text();
                    document.title = newTitle;
                    $('#nav-subnav').html($(content).find('#nav-subnav .submenu'));
                    $('#content').html($(content).find('#content #wrapper'));
                    $('#content').add('#nav-subnav').animate({opacity: 1},500);
                 }
            }); 
        }); 
    }
    return false; 
};

前もってありがとう、
ネイサン

4

0 に答える 0