如何使标题闪烁直到它变得活跃与jQuery?

时间:2011-09-30 23:40:27

标签: javascript jquery html notifications blink

我有一个javascript聊天。当用户收到消息时,我希望the title闪烁,直到它变为活动状态。 (比如Gmail Talk)

例如:

  • 您在其他标签页中。标题是My website
  • 有人跟你说话。标题在My websiteUser says: bla bla
  • 之间闪烁
  • 因此,您点击标签,现在标题为My website

如何使用jQuery实现这一目标?


到目前为止我尝试了什么:(眨眼永不停止播放)

var isOldTitle = true;
var oldTitle = "oldTitle";
var newTitle = "newTitle";
function changeTitle() {
     document.title = isOldTitle ? oldTitle : newTitle;
     isOldTitle = !isOldTitle;
     setTimeout(changeTitle, 700);
}
changeTitle();

4 个答案:

答案 0 :(得分:18)

完整解决方案:

var isOldTitle = true;
var oldTitle = "oldTitle";
var newTitle = "newTitle";
var interval = null;
function changeTitle() {
    document.title = isOldTitle ? oldTitle : newTitle;
    isOldTitle = !isOldTitle;
}
interval = setInterval(changeTitle, 700);

$(window).focus(function () {
    clearInterval(interval);
    $("title").text(oldTitle);
});

答案 1 :(得分:1)

Pinouchon的回答是有效的,但是如果我必须添加间隔检查,那么当一个人连续多次发送消息时,它不会加快标题的更改。 所以我有

if(timeoutId)
 {
     clearInterval(interval);
 }

 interval = setInterval(changeTitle, 700);

基本上如果已经设置了间隔,请将其清除然后重置。

答案 2 :(得分:0)

请记得在焦点上致电clearInterval

(function() {
  var timer,
      title = $('title'),
      title_text = title.text();
  $(window).blur(function() {
    timer = setInterval(function() {
      title.text(title.text().length == 0 ? title_text : '');
    }, 2000)
  }).focus(function() {
    clearInterval(timer);
    title.text(title_text);
  });
})();

答案 3 :(得分:0)

你可以尝试这个。您可以调用闪烁功能开始在两个标题之间切换,并在您不再需要时调用停止。

var title = document.title;
var interval = 0;

function blink(title1, title2, timeout){
    title2 = title2 || title;
    timeout = timeout || 1000;

    document.title = title1;
    interval = setInterval(function(){
        if(document.title == title1){
            document.title = title2;
        }else{
            document.title = title1;
        }
    }, timeout);
}

function stop(){
    clearInterval(interval);
    document.title = title;
}



blink('My blinking title!');
setTimeout(function(){
    stop();
}, 5000)