在不使用swfobject.embedSWF的情况下从youtube API获取状态

时间:2011-08-18 15:58:58

标签: javascript youtube

我正在尝试根据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错误。

1 个答案:

答案 0 :(得分:3)

您可能希望查看playerAPI for iframe embeds(实验性功能)。否则你需要使用swfobject(或类似的东西)在页面上嵌入视频,这最终会触发“onYouTubePlayerReady”功能。