音频持续时间返回NaN需要一些修改来运行播放器
Audio duration returns NaN need some modification to run the player
每当我运行脚本时,它都会返回音频持续时间的NaN
。
var mytrack = document.getElementById('mytrack');
var duration1 = document.getElementById('fullDuration');
duration1.innerHTML = parseInt(mytrack.duration);
HTML <audio id="mytrack" controls autoplay>
<source src="kalimba.mp3" type="audio/mp3" />
</audio>
<span id="fullDuration">0:00</span>
始终建议使用loadedmetadata
的事件,然后调用它们将始终有效。在这种情况下,使用事件侦听器是最好的。
var a = document.getElementById('mytrack');
a.addEventListener("loadedmetadata", function() {
var duration1 = document.getElementById('fullDuration');
duration1.innerHTML = parseInt(a.duration);
}, true);
等待媒体加载,然后设置<span>
标记的内容。为了获得最佳效果,请将此代码放在文档的末尾,</body>
标记之前或使用窗口的加载事件:
document.addEventListener('DOMContentLoaded', function () {
var a = document.getElementById('mytrack');
a.addEventListener("loadedmetadata", function() {
var duration1 = document.getElementById('fullDuration');
duration1.innerHTML = a.duration;
}, true);
}, false);
正如评论中所说,还有另一种方法可以使用preload
attribute:
这个枚举属性旨在向浏览器提供一个提示,提示作者认为什么会导致最佳的用户体验。
但是既然你已经有了autoplay
属性,我想preload
就不需要了。
autoplay
属性优先于preload
。如果指定了autoplay
,浏览器显然需要开始下载音频以便播放。
您可以使用oncanplaythrough
事件。parseInt()
不是必需的。
var mytrack = document.getElementById("mytrack");
var duration1 = document.getElementById("fullDuration");
mytrack.oncanplaythrough = function() {
duration1.innerHTML = this.duration
}
<audio id="mytrack" controls autoplay>
<source src="https://upload.wikimedia.org/wikipedia/commons/6/6e/Micronesia_National_Anthem.ogg" type="audio/ogg">
</audio>
<span id="fullDuration">0:00</span>
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在运行时修改innerhtml属性
- Grunt:如何只对修改后的文件运行任务
- 运行时的 Java 脚本修改函数
- 在 DOM 修改后重新运行 jQuery 插件的任意方法
- 每次修改页面时都运行javascript
- Javascript/Coffeescript:如何在多个变量上优雅地运行函数(并对其进行修改)
- Chrome扩展驻留样式表的运行时修改
- 仅对最近修改的文件运行grunt contrib jshint
- 运行javascript修改css
- 在运行时从开发控制台修改角对象
- 如何在运行的JS函数中执行函数-修改JS游戏
- 在运行时修改Ruby on Rails中的link_to
- 修改此代码以在窗口上运行.加载而不是表单提交
- javascript函数可以修改在ASP.NET服务器上运行的元素吗?
- 如何在浏览器中修改JavaScript,然后在修改后运行它?
- 如何修改一个小的脚本运行没有jquery
- 如何修改/“;Spoof“;运行时的标准浏览器JS DOM对象(Window.location)
- 音频持续时间返回NaN需要一些修改来运行播放器