最大调用堆栈大小超过弹出状态



我尝试使用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();
问题是设置 window.location 正在触发另一个 popState 事件,因此

再次设置 window.location,因此调用 popState 事件...

我遇到了类似的问题,并通过在流行状态事件中删除"location.href = location.href;"来解决它

相关内容

  • 没有找到相关文章

最新更新