Остановить видео (пауза/воспроизведение) | YouTube

Если iframe задать display: none; то в Хроме видео всё равно будет "звучать": jsfiddle.net

Как же быть при закрытии модального окна или переключении таб-вкладок? В справке Ютуба есть указания, но без css-tricks.com с его практическим примером мне было бы не разобраться. Итак, рабочий вариант:

воспроизведение
пауза

<iframe src="//www.youtube.com/embed/JMJXvsCLu6s?rel=0&enablejsapi=1" frameborder="0" allowfullscreen id="Youtube"></iframe>
<div id="playYoutube">воспроизведение</div>
<div id="pauseYoutube">пауза</div>

<script src="//www.youtube.com/player_api"></script>
<script>
function onYouTubePlayerAPIReady() {
  player = new YT.Player('Youtube', {
    events: {'onReady': onPlayerReady}
  });
}
function onPlayerReady(event) {
  document.getElementById("playYoutube").addEventListener("click", function() {player.playVideo();});
  document.getElementById("pauseYoutube").addEventListener("click", function() {player.pauseVideo();});
}
</script>

Или так:

<div id="play"></div>
<div id="playYoutube1">воспроизведение</div>
<div id="pauseYoutube1">пауза</div>

<script src="//www.youtube.com/player_api"></script>
<script>
var play;
function onYouTubePlayerAPIReady() {
    play = new YT.Player('play', {videoId: 'JMJXvsCLu6s',});
    document.getElementById('playYoutube1').onclick = function() {play.playVideo();};
    document.getElementById('pauseYoutube1').onclick = function() {play.pauseVideo();};
}
</script>
в f t
наверх ↑

9 комментариев:

Dmitry Yoddha
Замечательная информация. Подскажите, как нужно изменить код первом варианте, чтобы видео останавливалось просто при событии мыши 'unfocus'?
(пытаюсь приспособить ваш код к плагину wordpress tooltips так, чтобы при пропадании тултипа видео не продолжало проигрываться в бекграунде)

show: {
when: 'click', // Show it on mouseover...
solo: true // ...and hide all others when its shown
},
hide: 'unfocus', // Hide it when inactive...
Dmitry Yoddha
я только учусь разбираться в скриптах, так что прошу прощения, если пишу что-о глупое :) Как впихнуть код непосредственно в моем случае? Что-то похожее на это?

show: {
when: 'click', // Show it on mouseover...
solo: true // ...and hide all others when its shown
},


hide: {
when: 'unfocus', // Hide it when inactive...
document.getElementById("pauseYoutube").addEventListener("blur", function() {player.pauseVideo();}); // ...и какие еще строки из кода добавить, чтобы работало?
}
NMitra
У вас jQuery или чистый JavaScript? С jQuery я не разбиралась, считаю его не очень перспективным, даже не знаю как его совмещать с JS.
Dmitry Yoddha
jQuery :)
Думал допилить этот плагин, чтобы использовать в свом блоге
https://wordpress.org/plugins/wordpress-tooltips/
NMitra
Увы, тут я плохой советчик, с лёта ответа не дам.
Анонимный
Да вы шутница на счет неперспективности. Ни что не мешает использовать JS в jQuery как никак jQuery построен на JS и принимает все его методы и функции.

Что касательно вопроса то:

hide: {
when: 'unfocus',
complite: function() {document.getElementById("pauseYoutube").addEventListener("blur", function() {player.pauseVideo();});}
}

Читаем документацию к плагину и смотрим какой параметр отвечает за завершение действия, он может называть и не complite а success, ready, closed и т.д. и дальше по правилам просто вставляем нужную нам функцию, которая выполнится по совершению данного действия.
NMitra
jQuery был изобретён в первую очередь из-за трудностей с селекторами, сейчас querySelector решает эту проблему.

jQuery неплохо утяжеляет страницу. Это пока не сильно чувствуют посетители, поскольку пока на многих сайтах (в т.ч. "пожилых", которые поддерживают IE5-6, но не мобильные и планшеты) подключена эта библиотека и она кэшируется в браузерах пользователей.

Всё больше людей довольствуются чистым JS из-за отсутствия необходимости в jQuery. Часто проще прописать код на JS для решения одной-трёх задач, чем подключать весь функционал библиотеки. Об этом говорили ещё в 2011 году, а сейчас 2014.

Спасибо за ваше дополнения, для меня оно ценно!
Алексей СМТ
Есть более простое решение - аттрибуту iframe src присвоить пустую строку, воспроизведение видео прекратится
NMitra
Тогда при возвращении к нему видео начнётся сначала, а не будет продолжено