【问题标题】:Check if YouTube video is playing and run script检查 YouTube 视频是否正在播放并运行脚本
【发布时间】:2012-01-21 02:19:15
【问题描述】:

我在 WordPress 中嵌入了以下视频

<iframe id="video" width="640" height="360" src="http://www.youtube.com/embed/xxxxxx?enablejsapi=1" frameborder="0" allowfullscreen></iframe>

它位于 SlideDeck 滑块内,当有人点击视频时,我想停止该滑块。我不知道如何得到这行代码

self.pauseAutoPlay = true;

在视频播放时运行。

我急需一些帮助。

编辑:因为我不是最终用户。我需要一些可以与 YouTube 的默认嵌入代码一起使用的东西。

【问题讨论】:

    标签: jquery youtube youtube-api


    【解决方案1】:

    您需要使用 YouTube iFrame API。请记住,我只知道 Javascript 等基础知识,因此这可能会更有效率。

    他们像往常一样嵌入你的 iframe

    <iframe id="player" width="640" height="360" src="http://www.youtube.com/embed/TJ2X4dFhAC0?enablejsapi" frameborder="0" allowfullscreen></iframe>
    

    但有一些变化。它需要有一个 ID,“玩家”,并且您需要将 ?enablejsapi 附加到源 URI 的末尾。

    然后您需要运行以下脚本来加载 API JS 并创建播放器

    // 2. This code loads the IFrame Player API code asynchronously.
          var tag = document.createElement('script');
          tag.src = "http://www.youtube.com/player_api";
          var firstScriptTag = document.getElementsByTagName('script')[0];
          firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    
      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubePlayerAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: 'u1zgFlCw8Aw',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }
    

    请注意,new YT.Player('player' 应与您的 iframe ID 匹配,videoId: 'u1zgFlCw8Aw' 应与 src URI 匹配。

    在此之后,您将能够运行类似的脚本

    var myPlayerState;
          function onPlayerStateChange(event) {
            if (event.data == YT.PlayerState.PLAYING && !done) {
              // DO THIS
            }
            myPlayerState = event.data;
          }
    
    if (myPlayerState == 1){
      // PAUSE SLIDER
    }
    

    【讨论】:

    【解决方案2】:

    您需要使用 Flash 直接嵌入 youtube:

    http://code.google.com/apis/youtube/js_api_reference.html#Embedding

    之后,您可以使用 youtube javascript API。

    您的代码可能是这样的:

    <script type="text/javascript" src="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",
                       "ytapiplayer", "425", "356", "8", null, null, params, atts);
    
    
    var player;
    
    function onytplayerStateChange(newState) {
        if (newState == 1)
            callPlay();
        else if (newState == 2)
            callPause();
    }
    
    function callPlay() {
        //video is play
    }
    
    function callPause() {
        //video is paused
    }
    
    </script>
    

    附: swfobject.js你可以找到here

    【讨论】:

    • 感谢您的建议,但与 WordPress 的合作似乎并不好。我也希望有一个不需要变通办法的解决方案,因为我不是最终用户。我需要一些可以使用 YouTube 的默认嵌入代码的东西。
    • 你可以试试:iframe API。但我没有这方面的经验
    猜你喜欢
    • 2016-02-05
    • 2018-12-18
    • 2020-09-08
    • 2011-10-09
    • 2012-12-29
    • 2016-10-22
    • 2012-02-18
    • 2019-08-19
    • 1970-01-01
    相关资源
    最近更新 更多