首页 > 解决方案 > 为什么 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 浏览器似乎忽略了它。

任何帮助表示赞赏。

标签: javascripthtmlcross-browsermicrosoft-edge

解决方案


通过使用检查元素,我发现您已被您的 document.write() 覆盖,这使您的脚本仅运行一次

    function CalculationCycle(){
    niter+=1;
    document.write("<br>Status   niter= "+ niter.toString());
    setTimeout(CalculationCycle(),200); //Give some time to redraw
 }

您的 CalculationCycle 将 () 放在它应该工作之后


推荐阅读