Как вернуть продолжительность видео из пользовательской функции конструктора объекта в JavaScript? - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь получить продолжительность видео внутри пользовательской функции конструктора видео. Это проблема объема? Как бы я продолжил и сделал это эффективно? Видео отображается правильно, я просто не могу получить доступ к его продолжительности вне функции.

Я предполагаю, что это простая проблема, общая для начинающих. Может быть, что касается использования addEventListener?

<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    <title>X</title>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script>
    $(document).ready(function(){

            var video_1 = new CustomVideo('0.mp4');
            video_1.createVideo();

            var videoDuration = video_1.durationVideo();
            console.log('durationVideo outside function = ' + videoDuration);
            });

            function CustomVideo(videoSrc){

                    this.videoSrc = videoSrc;
                    this.createVideo = createVideo;
                    this.durationVideo = durationVideo;

                    var myVideo;
                    var id_rand;
                    var id_myVideo;

                    function createVideo(){
                            myVideo = document.createElement('video');
                            id_rand = Math.floor(Math.random() * 999999);
                            id_myVideo = 'myVideo' + String(id_rand);
                            document.body.appendChild(myVideo);
                            myVideo.id = id_myVideo;
                            myVideo.src = videoSrc;

                    }

                    function durationVideo(){

            console.log('id_myVideo inside durationVideo =' + id_myVideo);
            var v = document.getElementById(id_myVideo);
            v.addEventListener( "loadedmetadata", function (e) {

                console.log('durationVideo inside func = ' + v.duration);
                return v.duration;

            }, false );
                    }
            }
    </script>
</head>

<body>
</body>

</html>

Я ожидаю получить продолжительность видео, оценивая функцию durationVideo.

1 Ответ

0 голосов
/ 15 января 2019

1 - Ваш элемент должен возвращать эту HTML-структуру: Пример продолжительности

  <video>
       <source src="0.mp4" type="video/mp4">
  </video>
...