Um aluno está desenvolvendo um chat e me perguntou esses dias como fazer para alertar o usuário da chegada de uma nova mensagem quando a janela do bate-papo estiver em segundo plano. “Como o MSN”, ele disse. Bom, você não faz isso. Se alguém conhecer um truque secreto, por favor nos conte.

O que você pode fazer é mudar o texto do título da janela afim de chamar atenção do usuário. Não é a mesma coisa, mas é o melhor que temos.

Preparei então um pequeno código de exemplo. Arquivo titleRotator.js:

titleRotator={
  chars:['#',' ','%',' '],
  rotating:false,
  position:0,
  rotate:function(){
    if(this.rotating){
      this.position=(this.position+1)%this.chars.length
      this.clear()
      document.title=this.chars[this.position]+' '+document.title
    }
  },
  clear:function(){
    document.title=document.title.replace(/^\W /,'')
  },
  start:function(){
    if(!this.rotating){
      document.title=this.chars[this.position]+' '+document.title
      this.rotating=true
    }
  },
  stop:function(){
    if(this.rotating){
      this.clear()
      this.rotating=false
    }
  },
  toggle:function(){
    this.rotating?this.stop():this.start()
  }
}
setInterval("titleRotator.rotate()",150);

Você pode ver um exemplo disso funcionando aqui. Sugestões de melhoria são muito bem-vindas.