0

を使用して div 内のコンテンツを置き換える jquery ナビゲーション スクリプトを作成しました.load。また、pushstate と popstate で HTML5 History API を使用しています。

$(document).ready(function(){

$('.menu_top').on('click', function(e) {
    $("#loading").show();
    var href = $(this).attr('href');
    history.pushState({url: href}, '', href);
    $('#contentwrapper').fadeOut('normal').hide().load(href + " #contentwrapper > *");
    $('#contentwrapper').waitForImages(function() {
    $(this).fadeIn('slow');  
});

    $(document).ajaxSuccess(function() {
  $("#loading").delay(1000).fadeOut();
});

});
    var popped = ('state' in window.history), initialURL = location.href;
    $(window).bind('popstate', function(event){
    var initialPop = !popped && location.href == initialURL;
    popped = true;
    if ( initialPop ) return;
    var state = event.originalEvent.state;

    $('#contentwrapper').load(state.url + " #contentwrapper > *");
});

});

コードはほとんど機能し、ブラウザーの戻るボタンと進むボタンは正常に機能しますが、ブラウザーで「戻る」を押して、アクセスした元のページに移動しようとするまでは。例えば:

1ページから開始

ページ 2 へのリンクをクリック - 作品

ページ 3 へのリンクをクリック - 作品

ページ 2 の「戻る」を押してください - 動作します

ページ 1 の「戻る」を押してください - 機能しません

...

コンソールに次のメッセージが表示されます。

Uncaught TypeError: Cannot read property 'url' of null

との初体験popstateです。ブラウザを元のページに戻すにはどうすればよいですか? 問題を十分に説明したことを願っています。どんな助けでも大歓迎です!

問題の実際の動作を確認したい場合は、ここに問題のライブ デモがあります。

4

1 に答える 1