我是Javascript的新手.我找不到我的查询答案我没有太大的成功.这是对问题的描述.
我创建一个音频元素并将源设置为.m4a文件..m4a文件能够成功加载和播放.
但是,在请求源音频持续时间时,我得到了奇怪的结果.以下JavaScript在Chrome中生成"NaN":
//Create audio element based on HTML audio id and modify controls accordingly
var aud = document.getElementById("storyTime");
aud.setAttribute("src",story.audioTitle);
console.log("DEBUG: Audio Duration = " + aud.duration); //Get 'NaN'
console.log("DEBUG: Audio Source = " + aud.src);
aud.controls = true;
Run Code Online (Sandbox Code Playgroud)
我尝试在具有类似功能的HTML中插入带有onclick回调的按钮.执行"相同代码"的此按钮返回正确的音频持续时间.
HTML:
<button onclick="checkDuration()" type="button">Get audio length</button><br>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
//Check audio duration
function checkDuration() {
var aud = document.getElementById("storyTime");
console.log("DEBUG: Audio Duration: " + aud.duration);
}
Run Code Online (Sandbox Code Playgroud)
我认为问题在于所述请求的时间安排.但是,如果我使用加载事件(例如'canplaythrough')来说明持续时间请求,那么在使用内联代码时我仍会得到'NaN'响应.
aud.addEventListener("canplaythrough", console.log("Audio duration = " + aud.duration));
Run Code Online (Sandbox Code Playgroud)
我很欣赏任何有关正确处理音频加载事件序列的提示.
感谢Andy的建议.我能够使用以下代码查询可靠的持续时间.
//Create audio element based on HTML …Run Code Online (Sandbox Code Playgroud)