2011-12-29 15 views
6

Duplicar posibles:
test if window has focusSaber cuándo un usuario está buscando en su sitio en el navegador vs otra pestaña/aplicación

Un sitio que utilizo con frecuencia tiene una función de chat en línea (una ventana emergente, muy similar a Facebook). Cuando mi navegador no está en la pestaña de este sitio, se emite una alerta para avisarme de cualquier nuevo mensaje de chat recibido, y cuando mi navegador no está en la pestaña de este sitio, el sonido no ocurre (por diseño, supongo) .

¿Cómo se consigue esto? ¿Cómo sabe el código (javascript I assume y por lo tanto, ejecutado en mi lado del cliente) cuando estoy/no estoy mirando el sitio?

Gracias

+1

probablemente usted está buscando: [esta respuesta] (http://stackoverflow.com/a/3479960/416518) – lsuarez

+1

Ver: http://stackoverflow.com/questions/1760250/how-to-tell-if-browser-tab-is-active –

+0

"Cuando mi navegador no está en la pestaña de este sitio, se emite una alerta para advertir de cualquier nuevo mensaje de chat recibido, y cuando mi navegador no está en la pestaña de este sitio, el sonido no ocurre (por diseño, supongo) ". ¿Podrías aclararlo por favor? Tu declaración se repite esencialmente a ti mismo. –

Respuesta

0

Una respuesta completa basada en otros comentarios de arriba. Sí, es principalmente una pregunta repetida, pero fue muy bien formulada, por lo que permanecería en la bóveda de preguntas sin respuesta para siempre si alguien no respondiera. Para otras personas que tengan esta pregunta para encontrar esta respuesta, consulte los otros temas vinculados en los comentarios de la pregunta.

<BGSOUND id="BGSOUND_ID" LOOP=1 SRC="jsilence.mid"> 

<script type="text/javascript" language="JavaScript"> 

    function onBlur() { 
     document.body.className = 'blurred'; 
    }; 
    function onFocus(){ 
     document.body.className = 'focused'; 
    }; 

    if (/*@[email protected]*/false) { // check for Internet Explorer 
     document.onfocusin = onFocus; 
     document.onfocusout = onBlur; 
    } 
    else { 
     window.onfocus = onFocus; 
     window.onblur = onBlur; 
    } 

    function playSound(audioURL) 
    { 
     if (document.body.className == 'blurred') 
     { 
      if (document.all) 
      { 
       document.all['BGSOUND_ID'].src=audioURL; 
      } 
      else 
      { 
       self.iplayer.location.replace('jsplayer.htm?'+audioURL); 
      } 

      setTimeout("stopSound();", 500); 
     } 
    } 

    function stopSound() 
    { 
     if (document.all) 
     { 
      document.all['BGSOUND_ID'].src='jsilence.mid'; 
     } 
     else 
     { 
      self.iplayer.location.replace('jsplayer.htm?stop'); 
     } 
    } 

    function NewMessage(message) 
    { 
     ShowMessage(message); 
     playSound('ding.mid'); 
    } 

</script> 

Este código utilizará etiquetas BGSOUND IE & de ópera para reproducir un sonido si el usuario está utilizando cualquiera de estos navegadores, de lo contrario se asume que hay un iframe en la página iplayer nombre y utiliza un reproductor de 3 ª parte Embebido. Ver la fuente para más detalles.

  1. Enfoque fuente de código: Here
  2. reproducción de sonido Fuente: Here
Cuestiones relacionadas