2009-07-03 60 views
1

代码如下,但我得到“ytplayer is not defined”错误。这是“ytplayer未定义”使用SWFObject方法在网站上包含无铬Youtube视频

<script src="http://www.google.com/jsapi"></script> 
<script> 
    google.load("swfobject", "2.1"); 
</script> 

<script type="text/javascript"> 

     function updateHTML(elmId, value) { 
      document.getElementById(elmId).innerHTML = value; 
     } 

     function setytplayerState(newState) { 
      updateHTML("playerstate", newState); 
     } 

     function onYouTubePlayerReady(playerId) { 
      ytplayer = document.getElementById("myytplayer"); 
      ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
      ytplayer.addEventListener("onError", "onPlayerError"); 
     } 

     function onytplayerStateChange(newState) { 
      setytplayerState(newState); 
     } 

     function onPlayerError(errorCode) { 
      alert("An error occured: " + errorCode); 
     } 

     // functions for the api calls 
     function loadNewVideo(id, startSeconds) { 
      if (ytplayer) { 
      ytplayer.loadVideoById(id, parseInt(startSeconds)); 
      } 
     } 

     function play() { 
      if (ytplayer) { 
      ytplayer.playVideo(); 
      } 
     } 


    </script> 

其插入此处

<div id="ytapiplayer"> 

</div> 
<script type="text/javascript"> 
     // <![CDATA[ 

     // allowScriptAccess must be set to allow the Javascript from one 
     // domain to access the swf on the youtube domain 
     var params = { allowScriptAccess: "always", wmode: "transparent", menu: "false" }; 
     // this sets the id of the object or embed tag to 'myytplayer'. 
     // You then use this id to access the swf and make calls to the player's API 
     var atts = { id: "myytplayer" }; 
     swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer", 
         "ytapiplayer", "100%", "100%", "8", null, null, params, atts); 
     loadNewVideo('11mrMppgfrQ','0'); 
     play(); 
//]]> 
    </script> 

onYouTubePlayerReady作品和alert(ytplayer);在这个函数返回一个对象,但是调用内loadNewVideo alert(ytplayer);返回null的问题。

这是从http://code.google.com/apis/youtube/chromeless_example_1.html直接复制它工作正常。任何想法,我要去错了吗?它是否与在对象上调用getElementById相关?

+0

对不起,删除了dupe – ewengcameron 2009-07-03 16:33:12

回答

1

发现问题。

loadNewVideo('11mrMppgfrQ','0'); 
     play(); 

分别致电之前

function onYouTubePlayerReady(playerId) { 
     ytplayer = document.getElementById("myytplayer"); 
     ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
     ytplayer.addEventListener("onError", "onPlayerError"); 
    } 

移动它们的功能中,以这条线后

ytplayer = document.getElementById("myytplayer"); 

固定问题

最终代码如下所示:

function onYouTubePlayerReady(playerId) { 
    ytplayer = document.getElementById("myytplayer"); 
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
    ytplayer.addEventListener("onError", "onPlayerError"); 
    loadNewVideo('11mrMppgfrQ','0'); 
    play(); 
} 
相关问题