有一个功能animateTitle()可每3秒定期更改浏览器标题。

var animateTitle = function(countMessages) {
    if (isChatTab) {
        if (animStep) {
            document.title = "New messages ("+countMessages+") - "+origTitle;
        } else {
            document.title = origTitle;
        }
        animStep = !animStep;
    } else {
            document.title = origTitle;
            animStep = false;
    }

    time_title = setInterval(function(){ animateTitle(countMessages) }, 3000);
};


在我的脚本中,参数countMessages是实时更改的,并传递给函数animateTitle,因此这会导致缓冲区溢出,因为该函数是递归的。怎么修?

最佳答案

当前,由于您不清除现有间隔,因此每个函数调用都将创建新间隔。您应该将间隔移到函数之外:

var animateTitle = function(countMessages) {
  if (isChatTab) {
    if (animStep) {
        document.title = "New messages ("+countMessages+") - "+origTitle;
    } else {
        document.title = origTitle;
    }
    animStep = !animStep;
  } else {
        document.title = origTitle;
        animStep = false;
  }
};
 time_title = setInterval(function(){ animateTitle(countMessages) }, 3000);

09-25 19:34