2012-04-06 117 views
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”,但规定的时间内音频的最当时我得到的错误

“试图使用一个对象,是不是,或不再,可用
[打破这个错误]

audio_player.currentTime = audi_start_time; 

任何帮助,将不胜感激。在此先感谢

+0

什么是你的代码中的“回复”? – ocanal 2012-04-06 12:02:11

+0

回复是JSON对象,你可以忽略它。 audi_start_time包含音频的开始时间, – 2012-04-09 06:20:43

回答

2

我想你想,当你在window.onlaoad设置currentTime的设置currentTime文件准备好之前,

,因为它的工作。

这里是你正在尝试做的 - >jsFiddle demo-1不工作

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


编辑:

好的,我明白了。如果您试图设置动态追加的音频/视频标签的currentTime,则应等待音频标签准备好播放。

所以,你可以用oncanplay event检测到它,

例如,

<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>​ 

here is a working jsFiddle demo

+0

实际上我正在处理音频和视频,我没有硬编码标签。当我们拖放文件时,标签将被创建,因此您的代码只能使用HTML中的硬编码标签。所以请告诉我,我该怎么做才能动态设置当前时间 – 2012-04-10 06:07:30

+0

@SagarHugar,再次查看我的更新答案。 – ocanal 2012-04-10 12:21:46

+0

您的更新代码并未完全播放,但在轨道的开始时间卡住,直到指定的结束时间。我只能听到特定指定时间的哔声。 – 2012-04-11 05:25:42

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); 
    } 
}); 
+0

代替创建loadPlayed变量,您可以在addEventListener中指定一次选项: 'audioplayer.addEventListener('playing',function(){},{once:true})' – 2017-09-18 08:22:00

相关问题