2012-07-19 81 views
0

我试图将YouTube视频嵌入到我们客户的某个网站,并且它需要能够在播放完毕后显示图像。我认为最简单的方法是去除包含div的图像,以便显示底层图像..但是,我有点困难。我对JavaScript的知识知之甚少,而且我通常将这些工作交给的部分现在都无法使用。YouTube JS API - onStateChange

我遇到的问题是包含div不被删除。播放完成后,播放器只显示相关视频列表 - 不会奇迹般地消失!

任何人都可以建议我到目前为止写的代码?

感谢

-Al

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script> 
<div id="ytapiplayer"> 
    You need Flash player 8+ and JavaScript enabled to view this video. 
</div> 
<script type="text/javascript"> 

var params = { allowScriptAccess: "always" }; 
var atts = { id: "myytplayer" }; 
swfobject.embedSWF("http://www.youtube.com/v/VIDEO-ID?enablejsapi=1&playerapiid=ytplayer&version=3&autoplay=1&controls=0&modestbranding=1&showinfo=0&autohide=1", 
        "ytapiplayer", "621", "244", "8", null, null, params, atts); 
// listen 
function onYouTubePlayerReady(playerId) { 
    var ytplayer = getElementById("myytplayer"); 
    ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
} 
// closediv 
function onytplayerStateChange(newState) { 
    if (newState === 0){ 
     $('ytapiplayer').remove(); 
    } 
} 

回答

1

你的jQuery选择是错误的。

$('ytapiplayer').remove(); 

你的意思是查找名为ytapiplayer一个HTML元素,你需要使用一个#说,这是一个id。

所以,该行应为:

$('#ytapiplayer').remove(); 
+0

感谢您的快速反应epascarello,可惜它并没有帮助完全解决我的问题 - onStateChange被调用,但股利是不被删除。有任何想法吗? – 2012-07-19 16:32:43

+0

所以你修正了代码,你在那里添加了一个调试语句来看'newState = 0'吗? – epascarello 2012-07-19 17:24:57

0

我知道这已经在这里一段时间,但他的评论中表示,它仍然无法正常工作。

代码的另一个问题是他测试newState的位置,他应该测试newState.data。

他:

function onytplayerStateChange(newState) { 
    if (newState === 0){ 
     $('ytapiplayer').remove(); 
    } 
} 

需求是:

function onytplayerStateChange(newState) { 
    if (newState.data === 0){ 
     $('ytapiplayer').remove(); 
    } 
}