Событие YouTube onStateChange не работает должным образом

0

Мне было интересно, почему YouTube onPlayerStateChange работает неправильно.

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

Есть идеи?

<!doctype html>

<html lang="en">
<body>

<iframe src=""></iframe>
<script src="js/jquery.js"></script>
<script src="http://www.youtube.com/iframe_api"></script>
<script>    
function onPlayerStateChange(event) {
    switch(event.data) {
        case YT.PlayerState.ENDED:
            alert('VIDEO IS ENDED'); // <<<--- THIS IS NOT WORKING
            break;
    }
}

jQuery(document).ready(function($) {
    var vidId = 'uIv6u7pdR5I';
    $('iframe').attr('src', "https://youtube.googleapis.com/v/" + vidId);
        new YT.Player('player_'+vidId, {
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            },
            playerVars: { autohide: 1, showinfo: 0 }
        });
});
</script>
</body>
</html>
Теги:
iframe
youtube

1 ответ

1
Лучший ответ

Кажется, что это нормально, если вы используете Youtube api, как в инструкциях на странице https://developers.google.com/youtube/iframe_api_reference

То есть, что-то вроде этого:

<!doctype html>

<html lang="en">
<body>

<div id="player"></div>
<script src="http://www.youtube.com/iframe_api"></script>
<script>
function onPlayerStateChange(event) {
    switch(event.data) {
        case YT.PlayerState.ENDED:
            alert('VIDEO IS ENDED'); // <<<--- THIS IS WORKING
            break;
    }
}

var player;
function onYouTubeIframeAPIReady() {
    var vidId = 'uIv6u7pdR5I';
       player= new YT.Player('player', {
            videoId: vidId,
            events: {
//                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            },
            playerVars: { autohide: 1, showinfo: 0 }
        });
}


</script>
</body>
</html>

С кодом я получил ошибки, потому что вы не дождались ответа onYouTubeIframeAPIReady и onReady ссылались на функцию, которая не существовала. Кроме того, ваша настройка iframe src на URL-адрес youtube видео, конечно же, вызывала видео, которое показывалось на странице, но это не имело никакого отношения к айпине Youtube, поэтому не было причин, по которым onPlayerStateChange будет запускаться этим игроком.

  • 0
    Отлично ! Спасибо вам большое !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню