问题出在WebKit浏览器中。视频元数据在视频之后加载,因此当JS运行时不可用。您需要查询readyState属性;它具有从0到4的一系列值,让您知道视频处于什么状态;加载元数据后,您将获得1的值。
因此,您需要执行以下操作:
window.setInterval(function(t){ if (video.readyState > 0) { var duration = $('#duration').get(0); var vid_duration = Math.round(video.duration); duration.firstChild.nodevalue = vid_duration; clearInterval(t); }},500);我没有测试过该代码,但是它(或类似的东西)应该可以工作。



