我用setInterval函数来做一个倒计时的功能,可是当在ff中切换到其他标签页的时候,这个倒计时器会暂停。在ie下正常,有谁遇过这个问题吗。

解决方案 »

  1.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE>demo</TITLE>
      <META http-equiv="content-type" content="text/html;charset=gbk"/>
      <META NAME="Generator" CONTENT="CSS">
      <META NAME="Author" CONTENT="zhangqian">
      <META NAME="Keywords" CONTENT="mydemo">
      <META NAME="Description" CONTENT="this is my demo">
      <LINK rel="stylesheet" type="text/css" href=""></LINK>
      <style type="text/css">
    body
    {

    }
      </style>

      <script type="text/javascript" src=""></script>  </HEAD>
      <BODY>

    <input type="text" name="t" id="t" /> <script type="text/javascript">
    var i=0;
    function test()
    {
    i++;
    document.getElementById("t").value=i;
    }
    setInterval("test()",1000);
    </script> </BODY>
    </HTML>我的不会啊,我用ff试了   首先在这个页面执行  然后 新开一个选项卡  执行这个 页面   我回到第一个页面  他的值在就是正常情况下的..
      

  2.   


    恩 真实这个问题 我刚才试了下 setTimeout  一样的问题..    网上 好像也没有这样的  资料  这个 看有 高手 帮你 解决下
      

  3.   

    如果可以绕过这个问题也可以,只要可以实现我的目的
    setInterval("test()",1000); 那如果是设置为1000如何做出精确到0.01秒的倒计时器呢
      

  4.   

    哈,这个可能是你理解上的问题,并不是说它能倒计时,就是setInterval一直在正常起着作用,它很可能是另一个机制,如:确实是在用setInterval做倒计机,但是,你切换后,也确实停止了,只是在你切换回来时,它会先从服务端取一个最新的时间回来继续倒计时,这你明白了没?
      

  5.   

    嗯,那切换回来会触发的事件是哪个?另外我试了一下淘宝聚划算,切换回去的时候并没有检测到浏览器有新的请求。不过它有一直在轮询一个url。
      

  6.   


    这个还是有一些方法去实现的,如:setInterval倒计时的方法里,保存着当前倒计时的一个时间,然后呢,这个时间会与当前系统或是服务时的时间进行比较,这个肯定会有偏差,所以就需要纠正,这是与你是否切换无关的,这是一直是在纠正时间的一个机制,不管你切换了多久,或是你没切换,这个纠正都一直在进行中,只要有偏差就会纠正,不知您是否理解。但淘宝是不是这样,我不敢下准确的判断。
      

  7.   


    <html>
    <body><input type="text" id="clock" size="35" />
    <script language=javascript>
    var int=self.setInterval("clock()",50)
    function clock()
      {
      var t=new Date()
      document.getElementById("clock").value=t
      }
    </script>
    </form>
    <button onclick="int=window.clearInterval(int)">
    Stop interval</button></body>
    </html>这个却是正常的,每50毫秒就调用一次。