2012-01-20 1 views
2

Как получить тег HTML5 Audio для работы в веб-приложении с опцией автовоспроизведения?Аудио HTML5 Autoplay WebWorks

Ex: При загрузке документа Аудиоэлемент src изменен с помощью javascript, тогда audioElement.play() - это не работает, вам нужно привязать клик другой ссылки или кнопки к audioElement.play() и нажать «СНОВА». ..

Любые идеи?

function playSongNow(currentID) { 
    var audioElement = document.createElement('audio'); 
    audioElement.setAttribute('autoplay', 'true'); 
    audioElement.setAttribute('preload', 'true'); 
    audioElement.setAttribute('src', 'http://' + sessionStorage.url + ':' + sessionStorage.port + '/rest/stream.view?u=' + sessionStorage.user + '&p=' + sessionStorage.pass + '&v=1.6.0&c=BerrySonic&id=' + currentID); 
    audioElement.load(); 
    audioElement.addEventListener("load", function() { 
     audioElement.play(); 
     $(".duration span").html(audioElement.duration); 
     $(".filename span").html(audioElement.src); 
    }, true); 
    $('.play').click(function() { 
     audioElement.play(); 
    }); 
    $('.pause').click(function() { 
     audioElement.pause(); 
    }); 
    $('.volumeMax').click(function() { 
     audioElement.volume=1; 
    }); 
    $('.volumestop').click(function() { 
     audioElement.volume=0; 
    }); 
    $('.stop').click(function() { 
     audioElement.pause(); 
     audioElement.currentTime = 0; 
    }); 
    $('.playatTime').click(function() { 
     audioElement.currentTime= 35; //Testing skipping so used 35 
     audioElement.play(); 
    }); 
} 

playSongNow вызывается HTML:

<a onclick="playSongNow('2f6d656469612f52616964426f782f4d757369632f4164656c652f32312f4164656c65202d2052756d6f7572204861732049742e6d7033');"><li>Rumour Has It</li></a> 

NEW: На самом деле я думаю, что я сузил проблему до:

audioElement.addEventListener("load", function() { 
    audioElement.play(); 
    $(".duration span").html(audioElement.duration); 
    $(".filename span").html(audioElement.src); 
}, true); 

Я попытался с помощью "canplaythrough" Но ни один из них не работает, чтобы определить, когда прошло достаточно данных, чтобы реально играть, потому что если вы делаете:

audioElement.load(); 
audioElement.play(); 

Я попробовал следующее событие:

audioElement.addEventListener('canplay', function() { 
    alert('canplay'); 
    audioElement.play(); 
}); 

И это работает, но это не означает, что звук может играть без буферизации делает это? Он также мгновенно запускает событие «canplaythrough».

Некоторым руководством по этим мероприятиям было бы удобно.

+0

Когда и как называется 'playSongNow (currentID)'? – buschtoens

+0

Пожалуйста, ознакомьтесь с обновленным кодом, чтобы указать, как его назвать. Благодаря! –

+0

Вы добавляете этот звук в тело? Если нет, то почему? – mowwwalker

ответ

0

Вы можете справиться с этим с ended события, как следующее:

audioElement.addEventListener('ended', function(){ 
playSongNow(......) 
}, false); 
+0

Для получения дополнительной информации, http://forestmist.org/2010/04/html5-audio-loops/ – Ashraf

+0

Извините за более ранний комментарий - вы правы - закончилось событие, но огонь может не срабатывать. Кажется, мои проблемы все еще существуют. –

+0

Да, я думаю, вам нужно сначала установить время на ноль, приостановить и, наконец, снова сыграть. это.currentTime = 0; это.Пауза(); playSongNow (......) – Ashraf

0

canplaythrough не срабатывает на ежевику, но canplay делает .... не спрашивайте меня, почему ....

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

  • Нет связанных вопросов^_^