从addEventListener函数返回值

时间:2014-01-22 15:43:22

标签: html5 video return addeventlistener duration

function getVideoDuration() {

    var myVideo = document.getElementsByTagName('video')[0];

    myVideo.addEventListener('loadedmetadata', function {
        var duration = (Math.round(myVideo.duration));
        return duration;
    });
}

我会简单直接......

我想了解add.EventListener中函数的持续时间值。然而,这没有按预期工作,我认为这是不可能的......

我是对的吗?如果是这样,我有什么样的替代品?

提前致谢!

1 个答案:

答案 0 :(得分:1)

你不能按照你想要的方式去做。 loadedmetadata事件将在未来的某个时间发生。调用getVideoDuration()时不会发生这种情况。相反,您需要在eventlistener中放置任何需要持续时间的代码来检索持续时间,或者从那里调用函数并将持续时间值传递给它。

以下是代码中排序的细分:

  1. 您致电getVideoDuration()
  2. 您获得了第一个<video>标记。
  3. loadedmetadata事件添加事件监听器。
  4. 您的getVideoDuration()函数完成并退出并且不返回任何内容。
  5. 然后,一段时间后,loadedmetadata事件发生在该视频标记上,并且您的事件处理程序被调用。您获取持续时间并将其返回到事件系统中(例如,它无处可去,并且不会被任何代码使用)。
  6. 这是你可以做到的一种方式:

    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);
        });
    }