0

嵌入的 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 函数永远不会被触发。我在这件事上撞墙了,到目前为止,我只完成了一个头痛。

感谢您的任何帮助。

4

1 回答 1

0

我能够通过使用 swfobject.js 而不是 iFrame 来解决这个问题。我想知道如果我想出一种方法来允许脚本访问,iFrame 是否会让我做同样的事情,如下所示。如果有人知道这个问题的答案,我仍然会很感激答案。

在我的索引文件中:

<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();
    }
}
于 2012-05-27T15:02:52.767 回答