javascript - Chrome 控制台 - 循环重新加载
问题描述
我需要检查我的访客跟踪器,所以我在 chrome 控制台中输入了这个设置,并设置了保留日志:
i = 0;
while (i<4)
{
location.reload();
window.alert(i);
i++;
}
警报框弹出 4 次值(0、1、2、3),我也得到了结果:
3
导航到“网站网址”
结果和警告框显示代码运行到最后,但为什么页面只重新加载一次?
请不要苛刻。
解决方案
当您重新加载页面时,您编写的所有 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>
推荐阅读
- node.js - 发生未处理的 Promise Rejection 警告
- swt - 为什么 jzy3/jogl newt 窗口总是在顶部?
- sql - 撤消表空间问题
- java - 在 Spring WebFlux 中保存到磁盘之前,有什么方法可以将 FilePart 转换为 File?
- flutter - 使用 Cognito 放大 Flutter S3 文件下载
- jquery - jquery 3 ajax().fail(jqXHR) 状态始终为 0
- javascript - Vue html-to-paper打印b表导致GIANT排序箭头出现
- javascript - 'Firebase 未定义' Firebase 版本 9 的答案
- docker - docker-compose.yml 容器定义中的目标端口和已发布端口之间有什么区别?
- laravel - Laravel/Scout - 如何获取文档总数?