2010-06-03 14 views

Odpowiedz

8

pewnością wydaje mi się, że ten powinny praca, i nie mogę znaleźć żadnej dokumentacji, która mówi, że nie powinna pracować (albo z W3C lub od producentów takich jak Apple), ale umieszczenie plików audio jako zasobów Manifest pamięci podręcznej po prostu nie działa z Safari na co najmniej iPhonie w rozmiarze &.

Dźwięki są odtwarzane poprawnie, gdy aplikacja jest w trybie online (chociaż wydaje się, że ładują je od nowa za każdym razem i nie buforują ich) i nie narzeka na brak zasobów w trybie offline (co jest natychmiast zapomniałeś dołączyć JavaScript, CSS, HTML lub zasobów graficznych).

Zamiast narzekać (lub obciążenia); jeśli element ma kontrolę, że sterowanie jest zastąpione przez pole z napisem "Nie można odtworzyć pliku audio.". Alternatywnie, jeśli jest to element bez kontroli - tj. Dostęp przez JavaScript do .play() - to po prostu nie gra (nie powoduje żadnych błędów, po prostu nie ma dźwięku, JavaScript nadal działa normalnie).

Przetestowałem to z całkiem małymi (< 20k) plikami, a wynik jest taki sam, więc nie wydaje się być związany z wielkością, tylko ogólną odmową kopiowania. Nie jestem pewien, czy można zakodować dźwięk jako zasób na stronie (np zakodowany w base64) w sposób, jak z obrazami, ale mam zamiar zbadać tę opcję - Podejrzewam, że byłoby to możliwe. Próbowałem kodowania danych audio, jak URI danych ciągów i nawet próbowała generowania dźwięku w locie - zarówno drobnych prac w Safari na pulpicie, ale nie działa na iPhone/iPad OS (przynajmniej w wersji 3.x - nie próbowałem w systemie iOS 4, ale nie będzie dostępny przez tydzień i nie będzie oczekiwany na iPada przez kilka miesięcy, nawet jeśli go naprawią).

Przypuszczam odmowę buforowania plików dźwiękowych w iOS jest bug realizacja lub przeznaczone ograniczoną funkcjonalność. Jest to na pewno denerwujące i pokazuje korek na wiele przypadków użycia.

Nie jestem pewien, co się dzieje z innymi klientami HTML5, byłbym zainteresowany, aby wiedzieć (w szczególności na Andriod). Wsparcie Google dla dźwięku również nie było wspaniałe, więc może cierpieć z powodu tych samych ograniczeń.

+0

FYI powód JavaScript .play() nie działa na sterowanie mniej elementem, ponieważ jest zabronione w safari dla iPhone/iPad (musi być wprowadzane przez użytkownika). Co do "Nie można odtworzyć pliku audio", okazało się, że tak się dzieje, ponieważ plik nie był obsługiwany. Zdarzyło się to z pewnymi plikami mp3, z jakiegoś powodu. –

+0

@jd Dzięki, ale, aby wyjaśnić, widzę, że JavaScript faktycznie działa poprawnie, ale TYLKO jeśli masz szybką łączność (jeśli jest wolna, jest przerywana, ponieważ ciągle pobiera pliki dźwiękowe). Manifest pamięci podręcznej nie jest po prostu honorowany w przypadku plików dźwiękowych w aplikacjach HTML5 offline - przy połączeniach połączenia JavaScript działają (i działają wszystkie pliki dźwiękowe). Wygląda na to, niezależnie od wielkości pliku. –

+1

Dzięki za napisanie tego. Właśnie to przetestowałem i jest to zgodne z tym, co powiedziałeś. Big Bummer. – airportyh

1

Można zawsze stworzyć warstwę dekodowanie/kodowanie, który mówi do klienta SQLlite DB

+1

Nie ma limitu 5 meg do przechowywania jednej aplikacji? –

0

Nie widzę żadnego powodu, dla którego nie można określić pliki audio w cache manifest.

+0

Wygląda na to, że mogą wystąpić problemy, zobacz tutaj: http://stackoverflow.com/questions/1612116/html5-local-storage-of-audio-element-source-is-it-possible – UpTheCreek

Powiązane problemy