Youtube Javascript API:在IE中不起作用

Youtube Javascript API: not working in IE

本文关键字:IE 不起作用 Javascript API Youtube      更新时间:2023-09-26

我有一个嵌入式的Youtube视频,我想在用户暂停视频,跳过视频等时捕获事件。按照Google文档(http://developers.google.com/youtube/js_api_reference(中的示例,我执行以下操作:

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在IE中不起作用,IE不支持addEventListener((,所以我尝试将该行替换为:

youtubeplayer.attachEvent("onStateChange", onytplayerStateChange);

但它也不起作用。(这个问题的作者说他最终通过把"onComplete放在我的colorbox中,把swfobject放进去"来解决它,但我在这里没有使用colorbox(我什至不知道那是什么(,所以我不明白他的意思。

使用 alerts(( 进行调试,我看到确实调用了第一个函数(onYoutubePlayerReady(((,但我什至无法判断事件侦听器是否未注册,或者是否是 getElementById(( 不起作用;我尝试通过添加以下内容进行调试:

alert(typeof youtubeplayer);

紧随其后,但它甚至没有弹出。

哦,还有一件事:视频在Firefox和Safari中自动启动,但在IE中也不会。(是的,我在服务器上运行它,而不是在本地页面上(。

有人有什么想法吗?我真的不知道还能尝试什么。

好的,找到了解决方案。猜猜那是什么?只是写成:

var youtubeplayer = document.getElementById('youtubeplayer');

它在IE 8中完美运行。它所需要的只是"var"关键字。

以防万一它对有相同问题的其他人有用......