我有一个嵌入的Youtube视频,我想捕捉事件,当用户暂停视频,跳过等等。继谷歌的文档(http://developers.google.com/youtube/js_api_reference)的例子,我做了以下:YouTube的Javascript的API:不工作在IE
var video = (my video ID here);
var params = { allowScriptAccess: "always" };
var atts = { id: "youtubeplayer" };
var x = 854;
var y = 480;
swfobject.embedSWF("http://www.youtube.com/v/" + video + "?enablejsapi=1&playerapiid=ytplayer&version=3", "bobina", x, y, "8", null, null, params, atts);
function onYouTubePlayerReady(playerId) {
youtubeplayer = document.getElementById('youtubeplayer');
youtubeplayer.addEventListener("onStateChange", "onytplayerStateChange");
youtubeplayer.setPlaybackQuality('large');
}
function onytplayerStateChange(newState) {
//Make it autoplay on page load
if (newState == -1) {
youtubeplayer.playVideo();
}
var tiempo=youtubeplayer.getCurrentTime();
//Rounds to 2 decimals
var tiempo = Math.round(tiempo*100)/100;
alert(tiempo);
}
现在,这一切都完美的作品在Firefox和Safari,但有没有办法让它在IE8(我指的是工作:视频加载,但事件不会捕获:事件处理程序从未被调用)。据javascript addEventListener onStateChange not working in IE,IE不支持使用addEventListener(),所以我试着用替换该行:
youtubeplayer.attachEvent("onStateChange", onytplayerStateChange);
但它也不起作用。 (该问题的作者说,他最终通过在我的colorbox中放置“onComplete并将swfobject放入其中”来解决此问题,但我在这里没有使用colorbox(我甚至不知道它是什么),所以我不明白他的意思
使用alerts()进行调试,我看到第一个函数(onYoutubePlayerReady())确实被调用,但我甚至无法分辨事件侦听器是否未被注册还是那就是不正常的的getElementById();我试着调试通过添加:后
alert(typeof youtubeplayer);
权,但它甚至不弹出
哦,还有一件事:视频在Firefox和Safari中自动启动,但在IE中它也不会。 (是的,我在服务器上运行,而不是在本地页面上运行)。
任何人有任何想法?我真的不知道还有什么可以尝试的。