3

関数を使用しようとしましpopstateたが、エラーが発生しました: Uncaught RangeError: Maximum call stack size exceeded

ステップバイステップ

ステップ 1: をクリックしましたli。addToHistory() はうまく機能します。

ステップ 2 :backtohomeボタンをクリックしました。addToHistory() はうまく機能します

ステップ 3 : 進むボタンをクリックしてバインドwindow.popstateし、その行window.locationで無限ループが発生しました。そして、次のページが見えません。

私の機能の何が問題になっていますか?

function addToHistory(url) {
      window.history.pushState(null, " ", url);
}

$("li").on("click", function(e){
      var name = this_li.attr("data-name");
      addToHistory("#" + name); // example http://azerty.com/#kevin
      ...
}

$("#backtohome").on("click", function(){
      addToHistory("http://azerty.com/");
      ...
}

function hash(){
     var popped = ('state' in window.history && window.history.state !== null), 
             initialURL = location.href;

     $(window).bind('popstate', function (event) {
        // Ignore inital popstate that some browsers fire on page load
        var initialPop = !popped && location.href == initialURL
        popped = true
        if (initialPop) return;

        window.location = window.location.href;
        return;

     });
 }

 hash();
4

2 に答える 2