gpt4 book ai didi

javascript - 最大调用堆栈大小超过 popstate

转载 作者:行者123 更新时间:2023-11-29 10:15:52 29 4
gpt4 key购买 nike

我尝试使用 popstate 函数,但出现错误:Uncaught RangeError: Maximum call stack size exceeded

一步一步:

第 1 步:我点击了 li。 addToHistory() 效果很好。

第 2 步:我点击了 backtohome 按钮。 addToHistory() 效果很好

第 3 步:我点击了前进按钮,我绑定(bind)了 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 事件...

关于javascript - 最大调用堆栈大小超过 popstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21852117/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com