function getVideoDuration() {
var myVideo = document.getElementsByTagName('video')[0];
myVideo.addEventListener('loadedmetadata', function {
var duration = (Math.round(myVideo.duration));
return duration;
});
}
我会简单直接......
我想了解add.EventListener中函数的持续时间值。然而,这没有按预期工作,我认为这是不可能的......
我是对的吗?如果是这样,我有什么样的替代品?
提前致谢!
答案 0 :(得分:1)
你不能按照你想要的方式去做。 loadedmetadata
事件将在未来的某个时间发生。调用getVideoDuration()
时不会发生这种情况。相反,您需要在eventlistener中放置任何需要持续时间的代码来检索持续时间,或者从那里调用函数并将持续时间值传递给它。
以下是代码中排序的细分:
getVideoDuration()
<video>
标记。loadedmetadata
事件添加事件监听器。getVideoDuration()
函数完成并退出并且不返回任何内容。loadedmetadata
事件发生在该视频标记上,并且您的事件处理程序被调用。您获取持续时间并将其返回到事件系统中(例如,它无处可去,并且不会被任何代码使用)。这是你可以做到的一种方式:
function getVideoDuration() {
var myVideo = document.getElementsByTagName('video')[0];
myVideo.addEventListener('loadedmetadata', function {
var duration = (Math.round(myVideo.duration));
// call a function that needs the duration
myFunction(duration);
});
}