javascript - 为什么 Edge 浏览器不像其他浏览器那样处理 Javascript setTimer()
问题描述
我注意到 Edge 浏览器存在问题,但我无法弄清楚问题到底是什么:
我用javascript写了一个简单的网页来运行一些代码,它利用了这个setTimer()
功能。它在 Opera 浏览器中运行良好。在 Edge 浏览器上,此代码未运行,但我在网上找到的其他类似代码运行良好。
我将代码简化为以下内容。
<HTML>
<BODY>
<p>Test body</p>
<button id="BtnStartCalculation">Start Calculation</button>
<script>
//Test script
BtnStartCalculation= document.getElementById("BtnStartCalculation")
BtnStartCalculation.addEventListener('click',BtnStartCalculationClick,false);
var niter=0;
function BtnStartCalculationClick(event){
//Start the calculation by running iterations
document.write("<p>Start program</p>");
CalculationCycle();
}
function CalculationCycle(){
niter+=1;
document.write("<br>Status niter= "+ niter.toString());
setTimeout(CalculationCycle,200); //Give some time to redraw
}
</script>
</BODY>
</HTML>
单击按钮后,代码应不断打印状态,因为它CalculationCycle()
通过setTimer()
函数不断调用。由于某种原因,Edge 浏览器似乎忽略了它。
任何帮助表示赞赏。
解决方案
通过使用检查元素,我发现您已被您的 document.write() 覆盖,这使您的脚本仅运行一次
function CalculationCycle(){
niter+=1;
document.write("<br>Status niter= "+ niter.toString());
setTimeout(CalculationCycle(),200); //Give some time to redraw
}
您的 CalculationCycle 将 () 放在它应该工作之后
推荐阅读
- github - 为什么公共存储库的合作者信息不公开?
- django - Django 错过了 url 中的斜杠
- node.js - 断开连接的套接字中的孤立消费者
- c++ - 如何使用访问者对一组变量求和?
- sql - 在 groupby 条件下领先和落后
- java - 通过远程节点上传和下载文件,无需输入标签作为文件类型
- sql - 使用 Oracle SQL 替换字符串分隔符中的列值
- javascript - Firestore - 如何像我们在 sql 中一样获取集合中的记录总数
- powerbi - 如何在我们自己的应用程序中获取 power bi 仪表板?
- android - Android - Firebase 邀请返回错误 - Resultcode 0 - 发送的电子邮件 SMS 未发送