Слушатель событий Javascript для запуска видео в определенное время и остановки видео после определенной продолжительности - PullRequest
2 голосов
/ 15 ноября 2011

Я пытаюсь заставить мое видео (локально размещенное, а не потоковое) запускаться через определенное время и останавливаться через определенное время.Кто-то здесь помог мне здесь с Javascript, но он не работает для меня - не влияет на время воспроизведения вообще.

Итак, в моем заголовке я назвал javascript следующим образом:

<script src="Backend/build/Timer.js"></script>

И фактический javascript выглядит так:

// JavaScript Document

var starttime = 2000;  // start at 2 seconds
var endtime = 4000;    // stop at 4 seconds

var video = document.getElementById('player1');
video.currentTime = starttime;

video.addEventListener("timeupdate", function() {
    if (video.currentTime >= endtime) {
        video.pause();
    }
}, false);

1 Ответ

7 голосов
/ 16 ноября 2011
  1. Оберните ваш код в функцию и вызовите эту функцию в обработчике события готовности документа или загрузки тела, в противном случае video значение переменной может быть недопустимым.
  2. Согласно стандарту W3C :

    Атрибут currentTime должен при получении возвращать текущую позицию воспроизведения, выраженную в секундах . При установке, если медиа-элемент имеет текущий медиа-контроллер, он должен вызвать исключение INVALID_STATE_ERR; в противном случае пользовательский агент должен искать новое значение (которое может вызвать исключение).

    Если вы хотите начать воспроизведение видео через 2 секунды и остановиться на 4 секундах (в отметке времени видео), установите starttime, endtime на 2, 4 соответственно, а не 2000, 4000. Кроме того, перед поиском starttime, вы должны загрузить видео-ресурс один раз

    function playVideo() {
        var starttime = 2;  // start at 2 seconds
        var endtime = 4;    // stop at 4 seconds
    
        var video = document.getElementById('player1');
    
        //handler should be bound first
        video.addEventListener("timeupdate", function() {
           if (this.currentTime >= endtime) {
                this.pause();
            }
        }, false);
    
        //suppose that video src has been already set properly
        video.load();
        video.play();    //must call this otherwise can't seek on some browsers, e.g. Firefox 4
        try {
            video.currentTime = starttime;
        } catch (ex) {
            //handle exceptions here
        }
    }
    
...