2011-08-16 8 views
8

Po prostu chcę odtwarzać kilka plików audio sekwencyjnie za pomocą funkcji HTML5 Audio. Pod koniec każdej gry uruchamiane jest zdarzenie "zakończone" w celu załadowania następnego dźwięku. Ale w Safari 5.1 na komputer (na Macu) znalazłem "zakończone" wydarzenie tylko wystrzelone pod koniec pierwszej gry. Po załadowaniu i odtworzeniu drugiego dźwięku, wydarzenie "zakończone" nie uruchomiło się ponownie, nawet po zakończeniu odtwarzania dźwięku (śledziłem to przez zdarzenie "timeupdate"). Nawet gdy ręcznie odtwarzałem inne pliki audio, wydarzenie "zakończone" nie zostało ponownie uruchomione. Jednak w Chrome i mobilnym safari problem ten nie istnieje, a odtwarzacz audio może ciągle odtwarzać dźwięk od pierwszego dźwięku do ostatniego. Czy to błąd Safari 5.1 dla Mac OS X? (Nie testowałem tego w Windows)Wersja dla komputerów Safari dla komputerów Mac: Zdarzenie "zakończone" audio w formacie HTML 5 nie powoduje problemu

Obecnie mogę używać tylko zdarzenia "timeupdate", aby sprawdzić, czy gra się zakończyła, czy nie.

+0

Wpadłem dziś wieczorem na ten sam błąd. Niestety nie ma jeszcze rozwiązania. Dzięki za publikację. – shanebo

Odpowiedz

1

Tak, to jest denerwujący błąd. Możesz obejść to, zmieniając identyfikator elementu audio dla każdego pliku. Oto przykładowy kod, aby uzyskać pomysł:

<div id="audioDiv"> 
<audio id="audio0" src=""> 
    <h1>Your browser does not support the audio tag.</h1> 
</audio> 
</div> 

<script> 
var audioCounter = 0; 

function next() { 
audioCounter++; 
document.getElementById('audioDiv').innerHTML = '<audio id="audio' + audioCounter + '" src="file.mp3"></audio>'; 
document.getElementById('audio' + audioCounter).addEventListener('ended', next, false); 
document.getElementById('audio' + audioCounter).play(); 
} 

</script> 
Powiązane problemy