Chrome 控制台 - 循环重新加载

Chrome console - reload in loop

我需要检查我的访客跟踪器,所以我在 chrome 控制台中输入了这个,并设置了保留日志的设置:

i = 0; 
while (i<4) 
{ 
    location.reload();
    window.alert(i);
    i++;
}

弹出的警告框弹出了 4 次值(0、1、2、3),我也得到了结果:

3

Navigated to "url of website"

结果和警告框显示代码运行到最后,但为什么页面只重新加载一次?

请不要苛刻。

当您重新加载页面时,您编写的所有 javascript 代码都将丢失。在您的代码中,location.reload() 函数在 alert() 之前执行,但我怀疑因为 location.reload() 函数需要时间才能完全执行,它仍然有足够的时间执行 alert() 函数,以及所有其他迭代,这导致 while 循环在页面重新加载之前完成。

location.reload() 大概属于异步函数的范畴,就是说函数开始执行,并在后台保持 运行。异步函数之后的所有代码都会立即执行,无论异步函数是否已完成。

如果您想跟踪访客数量,请使用一些 php 并将数据保存在数据库中。

更新: 将此代码放入 .html 文件并打开它。根据需要多次重新加载,并检查控制台中的 currentClicks 变量。

<!DOCTYPE html>
<body>
<script>
var currentClicks = localStorage.getItem("clickCount");
currentClicks++;
localStorage.setItem("clickCount", currentClicks);
</script>
</body>
</html>

我怀疑 location.reload() 设置了重新加载页面的请求,但不会立即发生。它可能正在等待当前代码完成 运行,然后稍后分派。调度一次后,其余的待处理重载将丢失。