2011-12-29 15 views
6

Olası Çoğalt:
test if window has focus/uygulama

Ben sık kullandığınız bir site online bir sohbet işlevi vardır: (a açılır pencere, facebook'a çok benzer). Tarayıcım bu sitenin sekmesinde değilken, alınan yeni sohbet mesajlarını uyarmak için bir uyarı geldi ve tarayıcım bu sitenin sekmesinde bulunmuyorsa ses oluşmaz (tasarladığım gibi) .

Bu nasıl başarılır? Siteye bakmadığım/bulunmadığım kod (müşteri tarafımdan aldığım ve dolayısıyla çalıştırdığım javascript) nasıl biliyor?

Teşekkür

+1

: [Bu cevap] (http://stackoverflow.com/a/3479960/416518) – lsuarez

+1

Bakınız: http://stackoverflow.com/questions/1760250/how-to-tell-if-browser-tab-is-active –

+0

"Tarayıcım bu sitenin sekmesinde değilken, uyarmak için bir uyarı geliyor bana yeni gelen herhangi bir sohbet mesajından ve tarayıcımın bu sitenin sekmesinde olmadığı zaman, ses oluşmaz (tasarladığım gibi). " Lütfen açıklayabilir misiniz? İfadeniz esasen kendini tekrarlıyor. –

cevap

0

yukarıdan diğer açıklamalara dayanarak kapsamlı bir cevap. Evet, çoğunlukla bir tekrar soru, ama güzel bir şekilde sorulurdu, bu yüzden cevap vermediyse cevapsız cevapsız soruların içinde kalıyordu. Bu soruyu cevaplayan diğer kişilere bu cevabı bulmak için lütfen soru yorumlarındaki diğer bağlantılı konulara bakın.

<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> 

Bu kod, aksi takdirde orada sayfa adında iPlayer bir iframe ve bir gömülmüş 3. parti çalar kullanır varsayar kullanıcı bu tarayıcıların ya kullanıyorsa bir ses çalmak için IE & opera BGSOUND etiketlerini kullanacak. Ayrıntılar için kaynağa bakın.

  1. Odak kodu kaynağı: Here
  2. Ses Çalma Kaynak: Muhtemelen aradığınız Here