我正在尝试递归滚动到 twitter 页面的底部,直到页面显示用户的所有关注者。每次它到达底部时,它都会加载另一个段,直到没有剩余的段可以加载。
function findStats(){
a = $("a.js-nav");
for(i = 0; i < a.length; i++){
if(a[i].dataset.elementTerm === "follower_stats"){
return a[i];}
}
}
numberOfFol = function() {
return Number(findStats().innerText.match(/\d+/)[0]);
}
var bottom = function(){
scrollTo(0,document.height - $(window).height());
if($(".fullname.js-action-profile-name").length<numberOfFol()){
bottom();
}
}
我已经尝试了带有循环的非递归版本的底部(),每次页面冻结并且在我最后一次递归尝试时,控制台最终抛出了最大堆栈大小超出错误。我也在循环中尝试了 setTimeout ,因为页面需要加载时间,但发生了同样的事情(这是使用非递归底部函数)。非递归底函数是
var bottom = function(){scrollTo(0,document.height - $(window).height())}
更奇怪的是,如果我自己调用非递归底部函数,它可以正常工作并且毫无问题地进入页面底部(当然只有一次)。
为什么这些函数在递归/循环时会溢出堆栈?