Youtube start/stop
Добрый день!
Нашел скрипт для запуска и остановки (через долю секунды) встроенного на страницу Youtube-видео. Цитата:
Все работает, но видео приходится встраивать нестандартно: Цитата:
Цитата:
|
https://jsfiddle.net/fzu4ct7t/21/
Стоит обратить внимание на src="https://www.youtube.com/embed/oRSijEW_cDM?enablejsapi=1&origin=https%3A%2F%2Ffid dle.jshell.net" |
Цитата:
Скажите, пожалуйста, что это такое? Вы имели в виду, что есть отличие от стандартного кода встраивания? |
есть дополнительные параметры
enablejsapi=1 и origin=https%3A%2F%2Ffid dle.jshell.net Первый разрешает управление плеером с помощью js api Второй отвечает за за CORS разрешения |
Странно. Здесь https://jsfiddle.net/fzu4ct7t/21/ все работает.
Но ставлю этот код на сайт, перестает. И наоборот, ставлю свой (работающий на сайте) код в jsfiddle.net - не работает. Сравниваю построчно текущий код и ваш. У вас появляется элемент g = window; и функции переписаны иначе. function onYouTubeIframeAPIReady() { и g.onYouTubeIframeAPIReady = function () { function onPlayerReady(event) { и g.onPlayerReady = function(event) { и т.д. |
Скажите, пожалуйста, почему этот код https://jsfiddle.net/5swak436/1/ реальном сайте не работает?
|
Цитата:
<iframe data-assign="player" width="560" height="315" src="https://www.youtube.com/embed/oRSijEW_cDM" frameborder="0" allowfullscreen></iframe> <form> <input type="button" value="Пауза" onclick="player.pauseVideo()"> <input type="button" value="Продолжить" onclick="player.playVideo()"> </form> <script src="https://www.youtube.com/iframe_api" async></script> <script> const youtubeAPIReady = new Promise(function(resolve) { window.onYouTubeIframeAPIReady = resolve; }); for(const player of document.querySelectorAll('iframe[src*="youtube.com"][src*="embed"]')) { const url = new URL(player.src); url.searchParams.set("enablejsapi", "1"); player.src = url.href; youtubeAPIReady.then(function() { window[player.dataset.assign] = getYouTubePlayer(player); }); } function getYouTubePlayer(element) { return new YT.Player(element, { events: { onReady: onPlayerReady, onStateChange: onPlayerStateChange } }); function onPlayerReady(event) { event.target.playVideo(); } var done = false; function onPlayerStateChange(event) { if (event.data === YT.PlayerState.PLAYING && !done) { done = true; } } } </script> |
Malleys,
Очень круто! |
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <style type="text/css"> .thumb-wrap{ border: 8px #FFD700 solid; max-width: 560px; } </style> <iframe data-assign="player" width="560" height="315" src="https://www.youtube.com/embed/x-p_ymteSwo" frameborder="0" allowfullscreen></iframe> <form> <input type="button" value="Пауза" onclick="player.pauseVideo()"> <input type="button" value="Продолжить" onclick="player.playVideo()"> </form> <iframe data-assign="player1" width="560" height="315" src="https://www.youtube.com/embed/NslVg_Wxr_Q" frameborder="0" allowfullscreen></iframe> <form> <input type="button" value="Пауза" onclick="player1.pauseVideo()"> <input type="button" value="Продолжить" onclick="player1.playVideo()"> </form> <script src="https://www.youtube.com/iframe_api" async></script> <script> const youtubeAPIReady = new Promise(function(resolve) { window.onYouTubeIframeAPIReady = resolve; }); const div = document.createElement('div'); div.className = 'thumb-wrap'; for(const player of document.querySelectorAll('iframe[src*="youtube.com"][src*="embed"]')) { const clone = div.cloneNode(); player.parentNode.replaceChild(clone, player); clone.appendChild(player) const url = new URL(player.src); url.searchParams.set("enablejsapi", "1"); player.src = url.href; youtubeAPIReady.then(function() { window[player.dataset.assign] = getYouTubePlayer(player); }); } function getYouTubePlayer(element) { return new YT.Player(element, { events: { onReady: onPlayerReady, onStateChange: onPlayerStateChange } }); function onPlayerReady(event) { event.target.playVideo(); } var done = false; function onPlayerStateChange(event) { if (event.data === YT.PlayerState.PLAYING && !done) { done = true; } } } </script> </body> </html> |
Часовой пояс GMT +3, время: 02:42. |