Я работаю над сайтом с тоннами встроенных видео YouTube, клиент хочет показать всплывающее окно всякий раз, когда видео перестает расплываться.
Я посмотрел на youtube api и, кажется, есть способ обнаружить, когда заканчивается видео:
http://code.google.com/apis/youtube/js_api_reference.html
но я не могу вставлять видео, как они упомянули на этой странице, так как все видео уже находятся на сайте (тысячи, которые были добавлены вручную, вставив код для вставки).
Есть ли способ обнаружить окончание этих видео без изменения какого-либо из существующих видео (используя javascript)?
Это можно сделать через API-интерфейс проигрывателя YouTube:
Рабочий пример:
<div id="player"></div>
<script src="http://www.youtube.com/player_api"></script>
<script>
// create youtube player
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
width: '640',
height: '390',
videoId: '0Bmhjf0rKe8',
events: {
onReady: onPlayerReady,
onStateChange: onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
alert('done');
}
}
</script>
Что вы можете сделать, это включить script на всех страницах, которые делают следующее... 1. Найдите youtube-iframe: найдите его по ширине и высоте по названию или, найдя www.youtube.com в своем источнике. Вы можете это сделать... - цикл через window.frames по циклу for-in, а затем отфильтровывать по свойствам
добавить jscript в iframe текущей страницы, добавив функцию onYoutubePlayerReady must-include-function http://shazwazza.com/post/Injecting-JavaScript-into-other-frames.aspx
Добавить слушателей событий и т.д.
Надеюсь, что это поможет
enablejsapi=1
. Если они находятся в базе данных, изменить атрибутsrc
довольно просто. Вам может понадобиться некоторое регулярное выражение, если они статически вставлены в файлы HTML.