Javascript DOJO计时器在Chrome中暂停

Javascript DOJO计时器在Chrome中暂停,javascript,timer,dojo,Javascript,Timer,Dojo,我的计时器有问题,问题只出现在chrome上,而不是firefox上 我启动计时器,当我在chrome中更改选项卡时,计时器暂停,直到我切换回启动计时器的选项卡 可以测试为… 在chrome中打开文件(下面附加的代码),启动计时器,5秒后打开一个新标签,并在那里停留一段时间。。。。(说一分钟) 当您切换回启动计时器的选项卡时。。。。计时器仍在5秒钟内,并从那里继续 chrome会在选项卡未激活时暂停计时器,我想。。。。 如何解决这个问题 代码 <html> <head>

我的计时器有问题,问题只出现在chrome上,而不是firefox上

我启动计时器,当我在chrome中更改选项卡时,计时器暂停,直到我切换回启动计时器的选项卡

可以测试为… 在chrome中打开文件(下面附加的代码),启动计时器,5秒后打开一个新标签,并在那里停留一段时间。。。。(说一分钟) 当您切换回启动计时器的选项卡时。。。。计时器仍在5秒钟内,并从那里继续

chrome会在选项卡未激活时暂停计时器,我想。。。。 如何解决这个问题

代码

<html>

<head>
    <style type="text/css">
        body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"
        djConfig="parseOnLoad: true">
    </script>

    <script type="text/javascript">
        dojo.require("dijit.form.Button");
        dojo.require("dojox.timing._base");
        var hours = 0;
        var mins = 0;
        var secs = 0;
        var mili = 1;
        var t;
    </script>

    <script type="text/javascript">
        function showTimer() {
            t = new dojox.timing.Timer();
            t.setInterval(10);
            t.onTick = function() {
                if(mili == 100) {
                    mili = 0;
                    secs ++;
                }

                if(secs == 60) {
                    secs = 0;
                    mins ++;
                }

                if(mins == 60) {
                    mins = 0;
                    hours ++;
                }

                dojo.byId("my").innerHTML = "Time : " + hours + ":" + mins + ":" +secs + ":" + mili++;
            }
            t.start();
        }
    </script>

    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css"
    />
</head>

<body class=" claro ">
    <p>
        Timer testing
    </p>

     <button id="buttonTwo" dojoType="dijit.form.Button" type="button">
        Start Timer
        <script type="dojo/method" event="onClick" args="evt">
           showTimer ();
        </script>
    </button>
    <button id="buttonThree" dojoType="dijit.form.Button" type="button">
        Stop Timer
        <script type="dojo/method" event="onClick" args="evt">
           t.stop();
        </script>
    </button>
    <div id="my">&nbsp;</div>
</body>

正文,html{字体系列:helvetica,arial,无衬线;字体大小:90%;}
require(“dijit.form.Button”);
dojo.require(“dojox.time._base”);
var小时=0;
var-mins=0;
var-secs=0;
var-mili=1;
变量t;
函数showTimer(){
t=新的dojox.timing.Timer();
t、 设定间隔(10);
t、 onTick=函数(){
如果(mili==100){
mili=0;
secs++;
}
如果(秒=60){
秒=0;
mins++;
}
如果(分钟==60){
分钟=0;
小时++;
}
dojo.byId(“my”).innerHTML=“时间:“+hours+”:“+mins+”:“+secs+”:“+mili++”;
}
t、 start();
}

定时器测试

启动计时器 showTimer(); 停止定时器 t、 停止();

如果选项卡未激活,chrome似乎会停止所有(javascript)活动。 但是时间的问题可以用不同的方法来解决(我以前也遇到过同样的问题)。开始时,可以使用var startTime=new Date().getTime()

然后可以计算自启动以来经过的秒数

var secondsPassed = (new Date().getTime() - startTime) / 1000;
提供文档开始后的秒数,从中可以确定小时和分钟。
顺便说一句,你确实需要把事情安排妥当。

一般来说,超时不能保证在指定的时间触发