Таймер DOJO делает паузу в Chrome - PullRequest
0 голосов
/ 26 августа 2011

У меня проблема с таймером, проблема только в Chrome, а не в Firefox

Я запускаю таймер, когда я меняю вкладку в chrome, таймер останавливается до тех пор, пока я не переключусь обратно на вкладку, где я запустил таймер

Можно проверить как ... Откройте файл (код прикреплен ниже) в Chrome, запустите таймер, через 5 секунд откройте новую вкладку и подождите некоторое время .... (скажем, мин) когда вы переключаетесь обратно на вкладку, где вы запустили таймер .... таймер все еще находится в 5 секундах и продолжается оттуда ....

хром останавливает таймер, когда вкладка не активна, я думаю .... как это можно исправить?

код

<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>

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Похоже, что chrome просто останавливает все (JavaScript) действия, если вкладка не активна. Но проблему времени можно решить по-другому (раньше у меня была такая же проблема). При запуске вы можете иметь переменную startTime = new Date (). GetTime ();

Количество секунд, прошедших с начала, затем может быть рассчитано.

var secondsPassed = (new Date().getTime() - startTime) / 1000;

дает вам секунды с начала документа, из которых вы можете определить часы и минуты. Вам нужно округлить вещи между прочим.

0 голосов
/ 27 августа 2011

Вообще говоря, тайм-ауты не гарантированно срабатывают в указанное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...