小编blu*_*h76的帖子

Javascript根据请求顺序返回NaN的音频持续时间

我是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)

html javascript audio duration

3
推荐指数
1
解决办法
4712
查看次数

标签 统计

audio ×1

duration ×1

html ×1

javascript ×1