2010-11-24 18 views
10

Bir sayfada bir öğe değiştiğinde çalacak bir ses istiyorum. Bunu nasıl yapacağımı biliyorum, ancak 'u yalnızca ilk değişkede'da oynatamıyorum ve kullanıcı pencereye (sekme) odaklanana ve tekrar bulanıklaşana kadar bunu yapmaz.SO Sohbet gibi bir öğe değiştiğinde nasıl ses çıkarabilirim?

Benim geçerli kod:

var notif = new Audio('http://cycle1500.com/sounds/infbego.wav'); 
if (window.innerHeight === window.outerHeight) { 
    $(window).bind('DOMNodeInserted', function() { 
     notif.play(); 
    }); 
} 
+0

ne var çalışmaması gerektiğini, nesne çağrı:

notif = new Audio('http://cycle1500.com/sounds/infbego.wav'); if (window.innerHeight === window.outerHeight) { $(window).bind({ 'DOMNodeInserted': function() { notif.play(); $(window).unbind('DOMNodeInserted'); } }); } 

o değil çok çalışılabilir olan tek işleyicisi buysa, sadece bunu bir adlandırılmış işlevi yapmak .bind() 'tamamlanmadı ... o değil mi bir sözdizimi hatası mı? –

+0

** Sabit. ** Teşekkürler! – nyuszika7h

+0

** Güncelleme: ** Ses yolunu tamir ettim, yanılmışım. Lütfen cevaplarınızı güncelleyin. Daha sonra cevapları tekrar kontrol edeceğim. – nyuszika7h

cevap

4

sesinin çalınması veya olmasın gerekip gerekmediğini temsil etmek üzere bir değişkeni kullanın.

var shouldPlayAlertSound = true, 
    notif = new Audio('http://cycle1500.com/sounds/infbego.wav'); 
if (window.innerHeight === window.outerHeight) { 
    $(window).bind({ 
    'DOMNodeInserted': function() { 
     if (shouldPlayAlertSound) { 
     notif.play(); 
     } 
     shouldPlayAlertSound = false; 
    }, blur: function() { 
     shouldPlayAlertSound = true; 
    } 
    }); 
} 

Düzenleme: I (innerHeight çek hariç) Firefox, Safari ve Opera üzerinde tested this working ettik. (Chrome, WAV ses dosyalarını, sadece MP3, AAC veya Ogg Vorbis biçimlerini oynatmayı desteklemez.)

+0

Bu kod iyi görünüyor ve ** jsLint ** yalnızca tek bir hata gösteriyor: * 6. satırdaki sorun 6 karakter 48: Bir atama veya işlev çağrısı bekleniyordu ve bunun yerine bir ifade gördü. * 'ShouldPlayAlertSound && notif.play() ; '. Ama eğer bunun yerine “if (shouldPlayAlertSound === true) {notif.play(); } ', çalışmıyor. :/ – nyuszika7h

+0

** Teşekkürler! ** Yeni kodunuza küçük düzeltmeler yaptım ve şimdi tam olarak istediğimi yapıyorum! http://jsfiddle.net/Nyuszika7H/hpRHR/ – nyuszika7h

0

Bu sizin tek DOMNodeInserted işleyicisiyse, iş bittiğinde onu kaldırırım (tüm geleceği yapar) böyle ucuz eklemeleri),:

notif = new Audio('http://cycle1500.com/sounds/infbego.wav'); 
if (window.innerHeight === window.outerHeight) { 
    function play() { notif.play(); $(window).unbind('DOMNodeInserted', play); } 
    $(window).bind({ 
    'DOMNodeInserted': play 
    }); 
} 
İlgili konular