JavaScript + HTML5音频播放器 - 停止缓冲,EventHandler问题

时间:2016-01-30 03:18:24

标签: javascript html5 audio

我已经编写了一些javascript,以便播放器在暂停后停止缓冲,以便停止缓冲。每次按下播放或暂停时,代码基本上都会破坏播放器,创建一个新的播放器。我唯一的问题是它似乎只能听一次播放或暂停事件。如果我再次执行它们,代码将不再运行。有人可以看看这个,让我知道我做错了什么?在你问之前,我重新创建播放器的原因是因为我听说有必要为ios做实际停止缓冲。这是真的吗?如果有更好的方式,请告诉我,因为任何帮助将不胜感激。

谢谢! (以下代码)

<audio id="myaudio" controls>
  <source id="sourceMp3" src="" autoplay type="audio/mp3" preload="none"/>
  Your browser does not support the audio element.
</audio>

<script type="text/javascript">
var sourceMp3=document.getElementById('myaudio');
sourceMp3.src="url of mp3 stream";

function playfunc(){
    var audio = document.getElementById('myaudio');
    //audio.pause(0);
    audio.src = "http://";
    audio.load();
    audio.remove();
    var x = document.createElement("AUDIO");
    x.setAttribute("id","myaudio");
    x.setAttribute("controls", "controls");
    x.setAttribute("src","http://");
    x.load();
    document.body.appendChild(x);
    var audio = document.getElementById('myaudio');
    audio.src = "http://";
    audio.load();
    audio.src = "url of mp3 stream";
    audio.load();
    audio.play();
    console.log('play pressed')
}


function pausefunc(){
    //var tmp = sourceMp3.src;
    var audio = document.getElementById('myaudio');
    audio.pause(0);
    audio.src = "http://";
    audio.load();
    audio.remove();
    var x = document.createElement("AUDIO");
    x.setAttribute("id","myaudio");
    x.setAttribute("controls", "controls");
    x.setAttribute("src","http://");
    x.load();
    document.body.appendChild(x);
    var audio = document.getElementById('myaudio');
    audio.src = "http://";
    audio.load();
    audio.src = "url of mp3 stream";
    audio.load();
    audio.pause();
    console.log('pause pressed');

}


document.getElementById('myaudio').addEventListener('pause', pausefunc, false);
document.getElementById('myaudio').addEventListener('play', playfunc, false);

</script>

1 个答案:

答案 0 :(得分:0)

注释掉您的代码,然后记录点击。某事正在触发杀死事件的异常。如果没有您的代码,您会看到事件可靠地触发。