Я пытаюсь что-то сделать, когда пользователь нажимает «play» на видео YouTube, используя API YouTube:
<script type="text/javascript"> var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { events: { 'onReady': onPlayerReady, 'onStateChange': onPlayerStateChange } }); } function onPlayerReady(event) { event.target.playVideo(); } function onPlayerStateChange(event) { alert('not cool') if (event.data == YT.PlayerState.PLAYING) { alert('cool'); } } </script> <iframe id="player" width="970" height="582" src="http://www.youtube.com/embed/6oE-NlWHVuQ?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
Выдает ошибку:
Недопустимыйили указана недопустимая строка "code:" 12
Что я делаю на работе?
Спасибо!
Проблема решена :) Похоже, это не работает на localhost.
Он работает и на локальном хосте, как только вы добавляете параметр "origin" в src.
"origin"
src
. Если вы пишете тег, то при создании объекта YT.Playerвам не нужно указывать значения ширины и высоты, которые указываются в качестве атрибутов тега, или параметры videoId и player, которые указываются в URL-адресе src.В качестве дополнительной меры безопасности вы должны также включить параметр источника в URL-адрес, указав схему URL-адреса (http: // или https://) и полный домен страницы вашего хоста в качестве значения параметра. Источник не является обязательным, в том числе защищаетпротив внедрения вредоносного стороннего JavaScript на вашу страницу и захвата контроля над вашим плеером YouTube.
<iframe ... src="http://www.youtube.com/embed/6oE-NlWHVuQ?enablejsapi=1&origin=http://somewebsite.com" ...></iframe>
Вы можете написать все, что захотите, для этого значения, но вы должны предпочесть домен, которым владеете.
Код, который вы показали, работает и на localhost, возможно, это проблема с видео, которое вы встроили, или видео отключило свойство embedding.