У меня есть шаблон, который я строю с помощью fullPage js для создания скользящих разделов. Страница поддерживает видео, но прокрутка и жесты отключены, когда пользователи прокручиваются с помощью курсора поверх самого видео. Аналогично, это поведение наблюдается на мобильных устройствах.Toggle Play/Pause Youtube Видео с внешней кнопкой
Чтобы обойти это, я использую пустой div, наложенный на iframe youtube. Это решает поведение прокрутки, но мне также не хватает возможности напрямую управлять проигрывателем YouTube. Я пробовал использовать API-интерфейс youtube и jquery, чтобы подделать возможность переключения play/pause с пустым div, который у меня есть поверх проигрывателя youtube, но он не работает.
http://codepen.io/lumpeter/pen/XpayeB
Первичный код для YouTube является:
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("player");
ytplayer.addEventListener("onStateChange", "onPlayerStateChange");
}
function onPlayerReady(event) {
$('#video-button').click(function(event){
ytplayer.playVideo();
});
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
$('#video-button').click(function(event){
ytplayer.pauseVideo();
});
}
else {
$('#video-button').click(function(event){
ytplayer.playVideo();
});
}
}
Кто-нибудь может сказать, почему это не работает? У меня есть слушатели событий, которые ищут изменения и используют логическое определение состояния видео для переключения воспроизведения/паузы, но по какой-то причине это не работает, как я ожидал.
=============== UPDATE =================
Я также попытался следующие:
$(document).on('click', '#pauseVideo', function(){
player = new YT.Player('myVideo')
if (event.data == player.PlayerState.PAUSED) {
$('#myVideo').get(0).contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}','*');
}
if (event.data == player.PlayerState.PLAYING) {
$('#myVideo').get(0).contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}','*');
}
});
Однако, я получаю сообщение об ошибке «Uncaught ReferenceError: YT не определен».
Это отлично работает! Однако я пытаюсь переключиться на паузу или играть, поэтому для этого потребуется определить состояние видео. –
Я пробовал следующее: var is_playing = false; функция onPlayerReady (event) { var pauseButton = document.getElementById ("pauseVideo"); var that = this; pauseButton.addEventListener ("щелчок", функция (click_event) { если (that.is_playing) { player.pauseVideo(); } еще { player.playVideo();} }); } функция onPlayerStateChange (event) { if (event.data == YT.PlayerState.PLAYING &&! Done) { this.is_playing = true; } } –
Просто обработайте состояние видео в переменной javascript. Предположим, что он будет воспроизводиться после загрузки раздела и всякий раз, когда вы обнаруживаете щелчок, измените состояние. Легко. – Alvaro