2013-09-11 2 views
5

Я пишу html-страницу. Я хочу, чтобы он делал звуки, как указано в javascript по мере его запуска.Воспроизведение звука в браузере (Chrome), от javascript

В HTML, как это рекомендовано в ответах, которые я прочитал здесь, у меня есть линия

<embed src="wavs/beep.wav" autostart="true" width="0" height="0" id="beep" 
    enablejavascript="true"> 

Это воспроизводит звук во время загрузки, поэтому я уверен, что я дал правильный путь к действительному .wav. (Обращу автозапуск ложь когда-то все работает.)

У меня есть функция

function playSound (soundname) 
    { 
    var thissound = document.getElementById(soundname); 
    thissound.Play(); 
    alert("Played " + soundname); 
    } 

, который я называю, используя

playSound("beep"); 

Но когда этот вызов сделан, нет никакого звука , хотя предупреждение происходит. Мне кажется, что я делаю все по-рекомендуемому, но у меня должно быть что-то не так. Что я должен проверить дальше?

ответ

1

Не должно быть .play() - с нижним регистром «p»?

В зависимости от того, какие браузеры вы хотите поддерживать, вы можете захотеть заменить ваш <embed> тегом HTML5 <audio>: http://www.storiesinflight.com/html5/audio.html. На этой странице также есть примеры рабочих js!

+0

Спасибо, вы правы. .Play() просто ничего не делает, и я получаю предупреждение, но нет звука. .play() на самом деле не удается, поэтому я не получаю предупреждение. – user36956

+0

См. Комментарий к дробилкам ниже: js должен работать, когда вы будете использовать звуковой элемент! –

2

Вы получаете сообщение об ошибке, потому что getElementById дает вам элемент embed, а не элемент audio. элемент embed не умеет играть. Другими словами, в встроенном элементе нет игрового метода. Используйте следующий код, чтобы воспроизвести его правильно.

<html> 
<script> 
function playSound (soundname) 
    { 
    var thissound = document.getElementById(soundname); 
    thissound.play(); 
    alert("Played " + soundname); 
    } 
</script> 
<body> 
    <audio src="wavs/beep.wav" id="beep" autostart="false"></audio> 
    <input type=button onclick="playSound('beep')">play</input> 
    </body> 
    </html> 

Еще одно примечание. В зависимости от браузеров, которые вы, возможно, захотите поддержать, вам потребуется несколько версий источников звука. Для получения дополнительной информации см. this.

+0

Спасибо! Он работает сейчас. – user36956

4

Пытался этот код, и он хорошо работает в большинстве браузеров используется метод Js ниже

function playSound(soundfile_ogg, soundfile_mp, soundfile_ma) { 
    if ("Audio" in window) { 
     var a = new Audio(); 
     if (!!(a.canPlayType && a.canPlayType('audio/ogg; codecs="vorbis"') 
       .replace(/no/, ''))) 
      a.src = soundfile_ogg; 
     else if (!!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, 
       ''))) 
      a.src = soundfile_mp; 
     else if (!!(a.canPlayType && a.canPlayType(
       'audio/mp4; codecs="mp4a.40.2"').replace(/no/, ''))) 
      a.src = soundfile_ma; 
     else 
      a.src = soundfile_mp; 

     a.autoplay = true; 
     return; 
    } 
} 
9

Используйте родной HTML5 Audio API

В консоли Хрома попробуйте создать новый экземпляр элемент Audio, проходящий по пути звука, который вы хотите буферизировать. Например, если мы хотим пишущую звук, который мы можем сделать что-то вроде:

 
var typeWriter = new Audio("https://www.freesound.org/data/previews/256/256458_4772965-lq.mp3"); 

Примечания: для этого точного звука в буфере и избежать проблем CSRF, вы должны работать в консоли на www.freesound.org

typeWriter сейчас представляет собой тег html audio.

Попробуйте сделать звуковую петлю, установив typeWriter.loop = true

Наконец, воспроизведение/пауза звук с typeWriter.play() & typeWriter.pause()

Смежные вопросы