setInterval无法按预期工作

时间:2014-05-12 08:26:21

标签: javascript html match address-bar

$(document).ready(function(){
  $(window).load(function(){
        $('#background_cycler').fadeIn(1500);//fade the background back in once all the images are loaded

      // run every 7s  
      if(typeof window.chrome != "object") {
                setInterval('cycleImages()', 60000);  
      } else {
                setInterval('cycleImages()', 60000);  
      }

      var urlvid = location.href.match(/vid/i);
      if (urlvid) {
                setInterval('cycleImages()', 70000000);  
      }
        var browserName=navigator.appName; if (browserName=="Microsoft Internet Explorer") { setInterval('cycleImages()', 7000); }

此脚本应更改背景图像为不同浏览器切换的时间。我需要这个,因为Firefox和Chrome在后台更改图像时通常会滞后。 IE不会这样做。 这在观看视频时变得非常糟糕,因此我想在地址栏中检查/ vid /并将更改时间设置为(几乎)从不。问题是,它在Chrome和Firefox中的this link上每60秒仍会发生变化。 我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:1)

您设置两次间隔。您需要重新排序代码或清除prevoius间隔。每次调用setInterval都会创建重复的计时器,调用你的函数。

var urlvid = location.href.match(/vid/i);
if (urlvid) {
  setInterval(cycleImages, 70000000);  
}else{
  // run every 7s  
  if(typeof window.chrome != "object") {
    setInterval(cycleImages, 60000);  
  } else {
    setInterval(cycleImages, 60000);  
  }
}

更好的方法是将超时定义为变量,根据浏览器规则进行更改,然后使用它调用setInterval

var delay = 6000;
if(location.href.match(/vid/i)){
  delay = 70000000;
}
setInterval(cycleImages, delay);