2

我正在使用 javascript 代码以用户指定的开始时间播放音频

var audio_player = document.getElementById("audi");
//'audi' is ID of audio tag  
audio_player.currentTime = audi_start_time;
//Start time from where audio should start to play

audio_player.play();

当我运行网站时,我可以从“audi_start_time”中指定的时间开始播放音频,但大多数时候我都会出错

'试图使用一个不可用或不再可用的对象
[Break On This Error]

audio_player.currentTime = audi_start_time;

任何帮助,将不胜感激。提前致谢

4

2 回答 2

2

我认为您正在尝试currentTime在文件准备好之前进行设置,

因为当您在 window.onlaoad 中设置 currentTime 时它正在工作。

这是您要执行的操作-> jsFiddle demo-1不起作用

这是你应该做的-> jsFiddle demo-2工作


编辑:

好,我知道了。如果您尝试设置currentTime动态附加的音频/视频标签,您应该等待音频标签准备好播放。

所以你可以用oncanplay 事件检测它,

例如,

<div id="content"></div>
<button onclick="play()">play</button>

<script type="text/javascript">
function play() {
     var audio = document.createElement("audio");
     audio.controls = "controls";
     audio.innerHTML = '<source src="http://www.w3schools.com/html5/song.ogg" type="audio/ogg" />'+
                       '<source src="http://www.w3schools.com/html5/song.mp3" type="audio/mp3" />';
     var content = document.getElementById("content");
     content.innerHTML = "";
     content.appendChild(audio);
     audio.addEventListener("canplay", function() {
        this.currentTime = 5;        
     },true);
     audio.play();
}
</script>​

这是一个有效的jsFiddle 演示

于 2012-04-09T10:13:18.667 回答
0

在设置当前时间之前播放音频。为此,我整晚都在桌子上敲我的头,然后我找到了这个帖子:https ://github.com/johndyer/mediaelement/issues/243 。这最终为我工作:

audioplayer.src = source;
audioplayer.play();
audioplayer.addEventListener('playing', function () {
    if (loadPlayed == false)
    {
        audioplayer.currentTime = Time;
        audioplayer.play();
        loadPlayed = true;
    }
    else {
        audioplayer.removeEventListener('playing', this);
    }
}); 
于 2015-03-30T03:41:32.270 回答