Создайте таймер или предупреждение, на которое не влияет обновление страницы - PullRequest
1 голос
/ 20 июля 2011

Я хочу создать таймер / оповещение на моем веб-сайте, который уведомляет пользователя о том, что с момента входа в систему прошло 1 час. Таймер не должен начинаться с начала, когда страница обновляется. Я пытался использовать

setTimeout(function(){
  alert('signout!!');
}, 10000);

Работает нормально, пока я не обновляю страницу. Любые идеи приветствуются. Есть ли способ рассчитать время из дБ? Я сохраняю время входа в дБ.

Спасибо

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Используйте куки для хранения времени начала. При загрузке страницы вы можете проверить наличие куки и соответственно установить таймер.

Когда таймер достигает отметки часа или страница загружается после достижения отметки, предложите пользователю и удалите cookie.

Чтобы установить куки в Javascript, проверьте эту страницу: http://www.w3schools.com/js/js_cookies.asp

0 голосов
/ 21 июля 2011

Я получил решение, подобное этому.В <head> тег

<?php
                $cur_id = $_SESSION["cur_id"];      
                $st="select crStarttime, ADDTIME(crStarttime, '1:00:00') as en from callrecord where crID  = '$cur_id'";
                $rt = mysql_query($st);
                $r = mysql_fetch_array($rt);
                $starttime = $r['crStarttime'];
                $endtime=$r['en'];
            ?>      
            <script>
                var endtime = "<?php echo $endtime;?>";
            </script>
            <script type="text/javascript">
                function startTime()
                {
                    var today=new Date();
                    var h=today.getHours();
                    var m=today.getMinutes();
                    var s=today.getSeconds();
                    // add a zero in front of numbers<10
                    m=checkTime(m);
                    s=checkTime(s);
                    document.getElementById('txt').innerHTML=h+":"+m+":"+s;
                    var curtime =h+":"+m+":"+s; 
                    t=setTimeout('startTime()',500);
                    if(curtime==endtime)
                    {                   
                        alert("Time to signout.");
                    }                       

                }
                function checkTime(i)
                {
                    if (i<10)
                    {
                        i="0" + i;
                    }
                    return i;
                }
            </script>

Затем в теле

<div id="txt"></div> // just to print the current time.
0 голосов
/ 20 июля 2011

Свяжите свой таймер с определенной датой / временем - при загрузке страницы выясните количество секунд, оставшихся до этой точки в будущем, и установите соответствующее время ожидания. Вы можете сделать работу на клиенте или сервере. В любом случае.

...