2011-10-23 3 views
5

Czy można wykryć, czy przeglądarka obsługuje Html5 Audio przez Modernizr? Jeśli tak, to jak to się robi? Jeśli nie, masz jakieś roboty dookoła? W serwisie Google jest niewiele informacji na ten temat, więc każda pomoc zostanie doceniona.Wykrywanie obsługi dźwięku html5 za pomocą Modernizr

+6

Miałem właśnie opublikować trzecią odpowiedź "przeczytaj dokument", ale pozostałe dwie zostały wysłane kilka sekund wcześniej. Dokumentacja powinna być twoim pierwszym zasobem, a nie Stack Overflow ... –

Odpowiedz

8

Tak, poprzez modernizr.audio. Obsługuje wiele formatów audio (obecnie ogg, mp3, m4a & wmv). Przykład:

var audio = new Audio(); 
audio.src = Modernizr.audio.ogg ? 'background.ogg' : 
      Modernizr.audio.mp3 ? 'background.mp3' : 
            'background.m4a'; 
audio.play(); 

Więcej informacji w documentation.

+0

Tak, próbowałem tego: i to nie działa. Postaram się o to, dziękuję, człowieku –

+0

jak wykonać rzeczy wewnątrz instrukcji if? –

+0

@Michael 'if (Modernizr.audio) {..}' rzeczywiście działa. – alexn

2

Tak, modernizr wykrywa wsparcie audio według the documentation (to link), która nawet zawiera próbkę kodu (skopiowany poniżej):

var audio = new Audio(); 
audio.src = Modernizr.audio.ogg ? 'background.ogg' : 
      Modernizr.audio.mp3 ? 'background.mp3' : 
            'background.m4a'; 
audio.play(); 
1

znalazłem ten kod i to działało dobrze dla mnie:

<!DOCTYPE html> 
<html> 
<head> 
<title>Play Audio</title> 
<script src="script/jquery-1.6.2.min.js" type="text/javascript"></script> 
<script src="script/modernizr-latest.js" type="text/javascript"></script> 
<script type="text/javascript"> 
var currentFile = ""; 
function playAudio() { 

    var oAudio = document.getElementById('myaudio'); 
    // See if we already loaded this audio file. 
    if ($("#audiofile").val() !== currentFile) { 
     oAudio.src = $("#audiofile").val(); 
     currentFile = $("#audiofile").val(); 
    } 
     var test = $("#myaudio"); 
     test.src = $("#audiofile").val(); 
    oAudio.play(); 
} 

$(function() { 
    if (Modernizr.audio) { 
     if (Modernizr.audio.wav) { 
      $("#audiofile").val("sounds/sample.wav"); 
     } 
     if (Modernizr.audio.mp3) { 
      $("#audiofile").val("sounds/sample.mp3"); 
     } 
    } 
    else { 
     $("#HTML5Audio").hide(); 
     $("#OldSound").html('<embed src="sounds/sample.wav" autostart=false width=1 height=1 id="LegacySound" enablejavascript="true" >'); 
    } 

}); 
</script> 
</head> 

<body> 
<div style="text-align: center;"> 
<h1>Click to Play Sound<br /></h1> 
<div id="HTML5Audio"> 
<input id="audiofile" type="text" value="" style="display: none;"/><br /> 

<button id="play" onclick="playAudio();"> 
    Play 
</button> 
</div> 
<audio id="myaudio"> 
    <script> 
    function LegacyPlaySound(soundobj) { 
     var thissound=document.getElementById(soundobj); 
     thissound.Play(); 
    } 
    </script> 
    <span id="OldSound"></span>   
    <input type="button" value="Play Sound" onClick="LegacyPlaySound('LegacySound')"> 
</audio> 

Wystarczy dodać dźwięk z prawej nazwie w folderze i dodać pliki modernizatora z Jquery rzeczy i gotowe.

+0

Źródło: http://www.misfitgeek.com/2011/08/play-sound-in-html5-and-cross -obserser-support-with-backward-compatability / – Trae