2014-01-22 6 views
0

Следующая функция javascript служит для автовоспроизведения аудиофайла (через аудиотекст HTML 5), сокращает воспроизведение mp3 на 6 секунд, а циклы + автоматически воспроизводят звук с самого начала.HTML5 autoplay once

JavaScript:

function updateaudio() {  
var a_str = '<audio autoplay source src="audio/coolsound.mp3" type="audio/mpeg"></audio>'; 
document.getElementById('audio_span').innerHTML = a_str; 
} 
setInterval(updateaudio, 6000) 

HTML:

<div><span id="audio_span"></span><script src="js/audio.js"></script></div> 

Есть ли с помощью атрибута аудио html5, чтобы установить воспроизведение автовоспроизведением один раз от т.е. без зацикливания? Альтернативно, есть ли другой способ достичь этого (через javascript или html5)? После окончания звукового события я хотел бы установить флаг и остановить воспроизведение.

+0

SetTimeout() является не зацикливание версия setInterval(), так что попробуйте, что – MikeHelland

+0

Awesome, замена из setInterval для SetTimeout не приостанавливает воспроизведение через 6 секунд, а позволяет mp3 играть один раз, затем останавливается , – user3213563

+0

Есть ли необходимость в ожидании 6 секунд? – traditional

ответ

1

Не используйте setInterval(), если вам не нужен цикл.

Если вы просто хотите, чтобы приостановить воспроизведение через шесть секунд сделать:

setTimeout(function() { 

    document.getElementById('audio_span').pause(); 

}, 6000)): 
+0

audio_span здесь не является звуковым тегом. Это вызовет ошибку. вам нужно получить элемент 'audio', используя' document.getElementById ('audio_span'). childNodes [0] .pause(); 'Также удалите дополнительный парс в конце. Добавьте точку с запятой вместо двоеточия. – traditional

0

Я бы достичь того же, используя следующее.

function updateaudio() { 
    var audio = document.createElement('audio'); 
    audio.autoplay = true; 
    audio.controls = true; 
    audio.loop = false; 
    audio.preload = true; 
    audio.src = "audio/coolsound.mp3" 

    document.getElementById('audio_span').appendChild(audio); 
} 

updateaudio();