2010-06-03 30 views

cevap

8

Bu 'un çalışması gerektiğini kesinlikle bana gösteriyor ve işe yaramadığı (W3C'den veya Apple gibi satıcılardan), ancak ses dosyalarını Önbellek manifestosu, en azından iPad'de & iPhone'da Safari ile çalışmıyor gibi görünüyor.

Sesler, uygulama çevrimiçi olduğunda (her defasında yeni bir tane yüklüyormuş gibi görünüyor ve onları önbelleğe almıyor gibi görünüyorsa) iyi çalışıyor ve çevrimdışı modda iken bulunmayan kaynaklardan şikayet etmiyor (hemen Bir JavaScript, CSS, HTML veya resim kaynağı eklemeyi unutmayın). Şikayet etmek yerine (veya yükleniyor); Öğe, kontrolün "Ses dosyası yürütülemiyor" yazan bir kutu ile değiştirildiği bir kontrole sahipse. Alternatif olarak, eğer kontrolsüz bir elemansa - yani .play() - JavaScript ile erişilirse o zaman sadece çalmaz (herhangi bir hataya neden olmaz, sadece ses yoktur, JavaScript aksi halde devam eder) normalde).

Bunu oldukça küçük (< 20k) dosyaları ile test ettim ve sonuç aynı, dolayısıyla boyutla ilgili görünmüyor, yalnızca kopyalamayı reddeden bir battaniye. Sayfadaki sesi kaynak olarak kodlayabildiğinizden emin değilim (örneğin base64'te kodlanmış), ancak bu seçeneği araştıracağım - bunun mümkün olabileceğinden şüpheleniyorum. Veri URI dizeleri olarak ses verilerini kodlamayı denedim ve hatta ses üretmeyi denedim - her ikisi de masaüstünde Safari'de iyi çalışıyor ancak iPhone/iPad işletim sisteminde çalışmaz (en azından 3.x sürümünde - Denemedim iOS 4'te, ancak bir hafta boyunca çıkmayacak ve bir kaç ay boyunca iPad için bunu düzeltmez, hatta düzeltmezlerse bile).

iOS'ta ses dosyalarını önbelleğe almayı reddetmenin bir uygulama hatası mı yoksa amaçlanan sınırlı işlevsellik olduğunu tahmin ediyorum. Bir çok kullanım davası için kesinlikle can sıkıcı ve gösteriş durdurucu.

Diğer HTML5 istemcilerle olanları bildiğimden emin değilim (özellikle Andriod'da). Google’ın ses desteği de yıldızsızdı, dolayısıyla aynı sınırlamalardan muzdarip olabilir.

+0

FYI nedeni JavaScript .play() kontrol üzerinde çalışmaz daha az eleman çünkü iphone/ipad için safari izin verilmez (kullanıcı girişi olmalı). "Ses dosyası çalınılamıyor" söz konusu olduğunda, dosyanın desteklenmediğinden dolayı bunu buldum. Bu bazı sebeplerle belli mp3 dosyaları ile başıma geldi. –

+0

@jd Teşekkürler, ama açıklığa kavuşturmak için, gördüğüm JavaScript aslında iyi çalışır, ancak SADECE (hızlı) bağlantı varsa (yavaşsa, aralıklı, çünkü bu ses dosyalarını yeniden getirmeyi tutar). Önbellek bildirimi, çevrimdışı HTML5 uygulamalarındaki ses dosyaları için onurlandırılmamıştır - bağlantı sayesinde JavaScript çağrıları çalışır (ve tüm ses dosyaları çalışır). Bu, dosya boyutundan bağımsız olarak görünüyor. –

+1

Bu yazdığınız için teşekkürler. Sadece kendim test ettim ve söylediklerinizle tutarlı. Büyük serseri. – airportyh

1

Hep istemci SQLLite DB

+1

Uygulama başına depolama için 5 meg limit yok mu? –

0

Sana cache manifest ses dosyalarını belirleyemezsiniz bir neden görmüyorum konuşur bir kod çözme/kodlama katmanı geliştirebilir.

+0

Sorunlar var gibi görünüyor, buraya bakın: http://stackoverflow.com/questions/1612116/html5-local-storage-of-audio-element-source-is-it-possible – UpTheCreek

İlgili konular