html видео не останавливается, если команда находится в операторе if - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу приостановить воспроизведение видео изнутри оператора if в функции. он не приостанавливает его до тех пор, пока не завершится каждая вещь в if. если я переместу паузу за пределы if, она остановится. Я попробовал почти все, что я могу придумать. кто-нибудь объяснить мне, почему это не работает. и или предоставить образец рабочего кода?

function checktimeout()
    {
        seconds =seconds -1
        //video = document.getElementById('thisvideo');
        //video.pause()
        if (seconds == 0)
            {

                video = document.getElementById('thisvideo');
                video.pause()

                //do some other stuff here

            } 
    }


    seconds = 5
    delaytimer = setInterval(checktimeout,1000);

1 Ответ

0 голосов
/ 20 апреля 2020

"Я хочу приостановить воспроизводимое видео с кодом из инструкции IF функции"

Посмотрите, поможет ли приведенный ниже пример каким-то образом. Я также добавил логическое значение needTimer на случай, если вы захотите прекратить использование таймера после некоторого условия ( например: сделать паузу один раз, а затем никогда не использовать таймер снова ). Спросите что-нибудь.

<!DOCTYPE html>
<html>
<body>

<video id="thisvideo" controls  src="video.mp4" width="800" > </video>

<script>

var delaytimer; //# is updated by... function handle_Media_Events()
var needTimer = true;
var seconds = 5;

var myvideo = document.getElementById('thisvideo');

myvideo.addEventListener("play", handle_Media_Events );
myvideo.addEventListener("pause", handle_Media_Events );

function checktimeout()
{
    seconds -= 1; //# decrease by 1

    if (seconds <= 0) //# if SMALLER-THAN or EQUAL-TO
    {
        myvideo.pause();
        clearInterval(delaytimer); //# stop Timer
        needTimer = false; //# avoids re-adding Timer when another "play" event happens

        //# do some other stuff here...
        alert("video is now paused");
        seconds = 10; //set a new number (if still using... needTimer = true; )

    }
}

function handle_Media_Events()
{
    //# Handle Play/Pause events

    if( event.type == "play" )
    {
        //# start Timer if Play is is started
        if ( needTimer == true) { delaytimer = setInterval(checktimeout, 1000) };
    }

    else if( event.type == "pause" )
    {
        //# do whatever stuff when video is paused 

    }
}


</script>

</body>
</html>
...