2014-01-22 1 views
0
function getVideoDuration() { 

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

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

Я буду простой и прямой ...Возвращаемое значение из функции addEventListener

Я хочу, чтобы выйти значение длительности функции внутри add.EventListener. Однако это не работает должным образом, и я думаю, что это невозможно ...

Я прав? Если да, то какие альтернативы у меня есть?

Заранее благодарен!

ответ

1

Вы не можете сделать это так, как вы пытаетесь это сделать. Событие loadedmetadata происходит в будущем. Это не происходит, когда вызывается getVideoDuration(). Вместо этого вам нужно поместить любой код, для которого требуется длительность IN eventlistener, где будет получена продолжительность или вызвать функцию оттуда, и передать ей значение продолжительности.

Вот ломка секвенирования в коде:

  1. Вы называете getVideoDuration()
  2. Вы получаете первый <video> тег.
  3. Вы добавляете к нему прослушиватель событий для события loadedmetadata.
  4. Функция getVideoDuration() завершает работу и выходит и ничего не возвращает.
  5. Затем, спустя некоторое время, происходит событие 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); 
    }); 
} 
+1

@zppinto - смотри пример кода я уже добавленный к моему ответу. – jfriend00

+0

Hum ... Вот почему я не могу использовать этот подход! Я уже подозреваю! Спасибо за помощь :) – zppinto

 Смежные вопросы

  • Нет связанных вопросов^_^