Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mobilne przeglądarki(android), a element audio
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
radziopoke
Mam kłopot z elementem audio na przeglądarkach mobilnych.
  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="utf-8" />
  4. <script type="text/javascript" src="script/jquery-1.7.1.min.js"></script>
  5. <script type="text/javascript">
  6. var test = new Audio();
  7. test.src = 'intro.mp3';
  8. $(test).on('canplaythrough', function(){
  9. test.play();
  10. });
  11. </script>
  12. </head>
  13. <body>
  14.  
  15. </body>
  16. </html>

to jest skrypt, który próbuję odpalić na przykład na mobilnym chromie. Niestety nic nie słyszeć choć nie powinno być z tym problemów (przeglądarka obsługuje elementy audio z formatem mp3). O dziwo gdy dodam przycisk i dam mu możliwość odtworzenia tego audio to nie ma z tym najmniejszych problemów. Żadna inna funkcja (oprócz kilkania w przycisk) nawet setTimeout ustawiona na 10sekund nie może odtworzyć dzwięku (w tym czasie na pewno dzwięk byłby załadowany). Więc zastanawia mnie dlaczego tylko funkcja "click" działa.
a i żeby nie było zdarzenie 'canplaythrough' działa (wstawiłem tam alerta i został wyświetlony).
Przeglądarki konputerowe, nie mają najmniejszych problemów z uruchomieniem tego skryptu. Czy da się jakąś właczyć dzwięk bez click-a?
Turson
Spróbuj:
Kod
$(document).ready(function() {
    var test = new Audio();
    test.src = 'intro.mp3';
    $(test).on('canplaythrough', function() {
        test.play();
    });
});
radziopoke
Niestety, to również nie pomaga. Tez to wczesniej testowałem...
Edit:
O dziwo jak już raz uruchomię przyciskiem muzykę to już dalej mogę ją bez problemu kontrolować za pomocą takich funkcji jak setTimeout. A nawet dodatkowe obiekty audio się już też uruchamiają bez pomocy przycisku. Więc zastanawia mnie tylko kwestia dlaczego najpierw musze mieć jakiś rozrusznik...
by_ikar
Dzieje się tak dlatego że twórcy przeglądarek mobilnych stwierdzili że muszą ograniczyć takie autoplay dla dobra transferu użytkownika. Jakiś czas temu było kilka tricków na ominięcie tego, jak trigger który wywoływał click na danym elemencie, ale z każdym patchem twórcy mobilnych przeglądarek blokowali takie możliwości. Na chwilę obecną jest ciężko aby na wszystkich przeglądarkach to działało, użytkownik musi wykonać jakąś interakcje inaczej samo niestety to nie zagra. Podobnie jest z fullscreen dla którego również musi wystąpić interakcja, tyle że tutaj kwestia dotyczy wszystkich platform. Bo normalnie mógłbyś sobie ten autoplay ustawić jako atrybut/właściwość:

  1. <audio controls autoplay>
  2. <source src="intro.mp3" type="audio/mpeg">
  3. </audio>


Ale mobilne przeglądarki również to pomijają. Także niestety, na chwile obecną tego nie obejdziesz, a nawet jeżeli ci się to uda, w następnych aktualizacjach przeglądarek mobilnych mogą to załatać i znów będziesz bez ficzera.
radziopoke
dzięki smile.gif
Tworzę pewną gierkę w której dźwięk ma lekkie znaczenie. Ale zrobiłem to na własny sposób. Gdy skrypt wychwyci, że muzyka nie wystartowała to na całym ekranie pokazuje się przycisk informujący o tym, że bez kliknięcia w dany przycisk nie ma muzyki przez co nie można uruchomić gry biggrin.gif
Ale jeszcze raz dziękuję za rozwikłanie tej sprawy smile.gif
by_ikar
Jeżeli jest to gierka, to możesz napisać prostą aplikacje w której użyjesz wbudowanego silnika rendrowania, lub jakiegoś innego już gotowego, podasz na sztywno adres do strony i udostępnisz samą aplikacje. Ona będzie wtedy miała niewiele ponad kilkaset kb, taka aplikacja na każdą platformę, no a ty zyskasz większe możliwości nad swoją grą.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.