Drupal 7.x和onYouTubePlayerReady

时间:2012-05-27 14:13:32

标签: jquery drupal youtube

我试图在嵌入的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函数永远不会被触发。我在这上面撞墙,到目前为止我只是头疼。

感谢您的帮助。

1 个答案:

答案 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();
    }
}