使用jQuery的HTML5音频持续时间

jos*_*osh 4 html5

我试图使用jQuery获取音频持续时间,但很难得到它.我正在使用的方法定义如下

var audioElement = document.createElement('audio');            
        audioElement.setAttribute('src','song.mp3');            
           audioElement.play();
           var duration = audioElement.duration;
               $(".songtime").html(duration);
Run Code Online (Sandbox Code Playgroud)

但它说nan有人知道如何解决这个问题吗?

Alb*_*mpl 9

由于音频尚未加载,您需要等到元素加载了元数据,有一种简单的方法:

audioElement.addEventListener("loadedmetadata", function(_event) {
    var duration = audioElement.duration;
    //TODO whatever
});
Run Code Online (Sandbox Code Playgroud)


Vol*_*hat 5

问题可能不再有效,但问题是音频尚未加载文件。您应该在加载文件时添加事件

 $(audioElement).on("canplay", function () {
        alert(this.duration);
    });
Run Code Online (Sandbox Code Playgroud)


Que*_*tin 3

您正在尝试读取音频文件加载之前的持续时间。您必须等到浏览器知道持续时间是多少(即在它有时间下载文件头之后)。