аудио тег HTML5 не работает последовательно в Firefox - PullRequest
0 голосов
/ 22 февраля 2012
<audio id="playmysong" src="/media/click.wav" />
<input type="button" onclick="playMe();"/>
<script type="text/javascript">
    function playMe(){
        var obj = $("playmysong");
        obj.play();
    }
</script>

Этот код работает, когда я нажимаю первый раз. Этот код по-прежнему работает, если я нажму в следующий раз после ожидания около 4-5 секунд от одного клика до другого. Но когда я нажимаю первым и снова нажимаю в течение 1 секунды, звук не воспроизводится. Этот код отлично работает для Google Chrome, проблема только в Firefox.

Ответы [ 3 ]

0 голосов
/ 23 февраля 2012

Как только я сделал клон объекта DOM, он работал нормально для меня

var obj = $("playmysong").cloneNode(true);

Теперь он отлично работает в FF и Chrome

0 голосов
/ 23 февраля 2012

<!DOCTYPE html>

    <html>
  <head>
<style>

</head>
  <body>
<audio id="audio_with_controls" controls autobuffer >
  <source src="http://www.wav-sounds.com/various/beep.wav" type="audio/wav" />
      Audio tag not supported
</audio>
<!-- some actions from Javascript -->
<button id="play">Play</button>
<button id="play2">Play2</button>
<button id="pause">Pause</button>
<button id="duration">Show duration</button>
<div id="duration-log"></div>
<script>
  var song = document.getElementById('audio_with_controls');
  document.getElementById('play').addEventListener('click', function() { song.play(); }, false);
  document.getElementById('play2').addEventListener('click', function() { song.play(); }, false);
  document.getElementById('pause').addEventListener('click', function() { song.pause(); }, false);
  document.getElementById('duration').addEventListener('click', function() { document.querySelector('#duration-log').textContent = song.duration; }, false);
</script>

Вы можете увидеть этот код и запустить его в своем браузере. Вы можете увидеть, чем он отличается от FF и Chrome. Особенно смотрите слайдер, когда воспроизведение звука завершено. В FF он застревает в середине и через несколько секунд заканчивается. Это проблема, с которой я столкнулся в своем заявлении.

0 голосов
/ 22 февраля 2012

Если вы используете jQuery: Изменение

var obj = $("playmysong");

до

var obj = $("#playmysong").get(0);

Продолжая, попробуйте использовать play () и pause ():

function audioToggle(){
    var obj = $("#playmysong").get(0);
    if(obj.paused) obj.play() else obj.pause();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...