API YouTube - не стрелять 'onYouTubePlayerReady()'
Из того, что я прочитал, я должен настроить YouTube API:
<!DOCTYPE html>
<html lang="en">
<head>
<meta content='text/html;charset=UTF-8' http-equiv='content-type' />
<title>Youtube Player</title>
<script src="jquery.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
function onYouTubePlayerReady(id) {
console.log("onYouTubePlayerReady() Fired!");
var player = $("#youtube_player").get(0);
}
var params = { allowScriptAccess: "always" };
var atts = { id: "youtube_player" };
swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1",
"youtube", "425", "356", "8", null, null, params, atts);
</script>
</head>
<body>
<div id="youtube"></div>
</body>
</html>
Однако 'onYouTubePlayerReady()' не запускается вообще, и если я вручную получаю ссылку на игрока, много методов undefined; например, cueVideoById() работает, но playVideo() не делает.
Как я могу исправить эту проблему?
Ответы
Ответ 1
Вам нужно быть на веб-сервере с вашим тестом script, как указано в документации:
Примечание. Чтобы протестировать любой из этих вызовов, необходимо, чтобы ваш файл работал на веб-сервере, так как Flash Player ограничивает вызовы между локальными файлами и Интернетом.
Ответ 2
эта функция:
function onYouTubePlayerReady(playerid) {
console.log('readyIn');
};
не нужно напрямую входить в отдельный тег script.
Только правило, которое вы должны соблюдать: не помещайте эту функцию внутри события domready - ее нужно определить раньше.
Например, в mootools я использую его следующим образом:
function onYouTubePlayerReady(playerid) {
echo('readyIn');
};
document.addEvent('domready', function() {
...
});
Ответ 3
У меня есть ответ, выделите эту часть script и поместите ее в голову в свой тег script. OMG, наконец
<script type="text/javascript" language="javascript">
function onYouTubePlayerReady(playerid) {
ytp = document.getElementById('ytplayer');
ytp.mute();
};
</script>
Ответ 4
Я считаю, что это лучший способ добавить видео на YouTube с помощью javascript. Это дает вам очень четкий способ борьбы с событиями. Он работает на локальной машине, и насколько я знаю, он работает на яблочных устройствах. Вы можете использовать все события и функции, описанные в документации javascript для apt youtube.
<div id="player"></div>
<script>
//Load player api asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var done = false;
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'JW5meKfy3fY',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(evt) {
evt.target.playVideo();
}
function onPlayerStateChange(evt) {
if (evt.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
</script>
источник: http://apiblog.youtube.com/2011/01/introducing-javascript-player-api-for.html
Ответ 5
<!DOCTYPE html>
должен был вести страницу, чтобы материал html5 работал у меня в FF4
Ответ 6
Если вы встраиваете видео в YouTube таким образом:
<iframe src="http://www.youtube.com/embed/VIDEO_ID?jsapi=1" width="1280" height="720" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
тогда вы должны поместить
<script src="http://www.youtube.com/player_api"></script>
после </iframe> . По крайней мере, как я заработал.
Кроме того, если вы динамически меняете атрибут [src] iframe через jQuery или что-то другое, чтобы загрузить новое видео, вам необходимо вызвать onYouTubePlayerAPIReady()
после его загрузки.
Я предпочитаю изменить атрибут [src], а затем:
setTimeout(onYouTubePlayerAPIReady, 500);
Ответ 7
Просто была та же проблема, но по другой причине. Он работал в Chrome, но не в Firefox, и причина в том, что у меня был заголовок http "Content-type: text/xml" вместо "Content-type: text/html". Теперь, работая с HTML, запускается событие onYouTubePlayerReady в Firefox.
Просто опубликуйте это, если кто-то споткнется об этом ответе от Google (как, например, я просто пытался найти решение).