我正在尝试根据Youtube API报告当前正在播放的视频的状态来执行操作。 youtube API页面上的唯一示例涉及使用swfobject.embedSWF嵌入视频。我正在使用这种形式的东西:
<iframe width='640' height='385' src='http://www.youtube.com/embed/"+vid+"?version=3&enablejsapi=1&playerapiid=ytplayer' frameborder='0' type='text/html'></iframe>
我尝试了他们在示例中所做的事情:
function onYouTubePlayerReady(ytplayer) {
ytplayer = document.getElementById("ytplayer");
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
function onytplayerStateChange(newState) {
console.log("Player's new state: " + newState);
}
但我没有看到任何控制台输出。
编辑:我不反对使用swfobject,但我无法弄清楚如何让它工作(我对javascript和jQuery很新)。我试着替换它:
var video_frame="<iframe width='640' height='385' src='http://www.youtube.com/embed/"+vid+"?version=3&enablejsapi=1&playerapiid=ytplayer' frameborder='0' type='text/html'></iframe>";
用这个:
var params = { allowScriptAccess: "always" };
var atts = { id: "ytplayer" };
$div = $('<div />').attr('id', "containerplayer");
swfobject.embedSWF("http://www.youtube.com/v/"+vid+"&enablejsapi=1&playerapiid=ytplayer", "containerplayer", "425", "356", "8", null, null, params, atts);
(我也在onYouTubePlayerReady和Playerstate上定义了)但是我得到了一个Uncaught Type错误。
答案 0 :(得分:3)
您可能希望查看playerAPI for iframe embeds(实验性功能)。否则你需要使用swfobject(或类似的东西)在页面上嵌入视频,这最终会触发“onYouTubePlayerReady”功能。