我试图在嵌入的Youtube视频完成后隐藏DIV。我的平台是Drupal 7.x我正在使用JQuery来显示和隐藏div。我有麻烦得到onYouTubePlayerReady函数触发,这可以防止所有这一切发生。所有文件都在我的网络服务器上,我没有在本地尝试,因为YouTube解释说它无法在本地运行(http://goo.gl/5qeKC)
我的头部:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript" src="http://dev.mydomain.com/mytheme/site/sites/all/themes/mytheme/js/hfbusiness.js?m4hr22"></script>
在hfbusiness.js文件中,我有以下内容(此文件正在加载并正常工作,因为我可以触发显示的javascript警报):
function onYouTubePlayerReady(id) {
console.log("onYouTubePlayerReady() Fired!");
var player = $("#youtube_player").get(0);
}
Index.php包含:
<div class="marketing_video">
<iframe id="ytplayer" type="text/html" width="640" height="360" src="http://www.youtube.com/embed/hIaqCG8O5uU?version=3&enablejsapi=1&rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>
视频显示和播放iframe中定义的选项没有任何问题。但是,YouTubePlayerReady函数永远不会被触发。我在这上面撞墙,到目前为止我只是头疼。
感谢您的帮助。
答案 0 :(得分:0)
我能够通过使用swfobject.js而不是iFrame解决问题。我想知道iFrame是否会让我这样做,如果我找到一种方法来允许如下所示的ScriptAccess。如果有人知道这个问题的答案,我仍然会欣赏答案。
在我的索引文件中:
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/v/hIaqCG8O5uU?enablejsapi=1&playerapiid=ytplayer&version=3", "ytapiplayer", "425", "356", "8", null, null, params, atts);
</script>
hfbusiness.js
var $hfjq = jQuery.noConflict()
function onYouTubePlayerReady(id) {
var player = document.getElementById("myytplayer");
player.addEventListener('onStateChange', 'playerState');
}
function playerState(state) {
if(state == 0) {
$hfjq(".marketing_video").hide();
}
}