【问题标题】:Youtube API - SeekTo sometimes doesn't workYoutube API - SeekTo 有时不起作用
【发布时间】:2014-11-21 20:58:22
【问题描述】:

我试图让用户使用以下功能在 youtube 视频中寻找特定时间:

    function setCurrentTime(slideNum) {
    var object = <?php echo json_encode($matches); ?>;
    if ('seekTo' in player.trackingVideoId){
        var seekTime = object[0][slideNum];
        player.trackingVideoId.seekTo(HHmmssToSeconds(seekTime));
    }
}

在哪里

var object = [["00:00:00","00:01:07"],["00","00"],["00","01"],["00","07"]];

player.trackingVideoId = new YT.Player('trackingVideoId');

<iframe id="trackingVideoId" type="text/html" width="340" height="210" src="https://www.youtube.com/embed/D77wXvwChtU?enablejsapi=1" frameborder="0"></iframe>

<input type="button" value="Seek" onclick="setCurrentTime(1)"> 

它有时工作正常,有时它不工作,并出现以下错误(在Firefox控制台上):

TypeError: invalid 'in' operand player.trackingVideoId

if ('seekTo' in player.trackingVideoId){

在评论条件时if ('seekTo' in player.trackingVideoId){

出现如下错误

Uncaught TypeError: Cannot read property 'seekTo' of undefined 

更新:

我在 onYouTubeIframeAPIReady() 处初始化了它 - 如您的链接中所示。但是,我将 setCurrentTime(slideNum) 放在 onYouTubeIframeAPIReady() 函数之外,我试图把它放在里面,还有另一个错误是 setCurrentTime 没有定义。

我正在尝试寻找用户单击按钮时的特定时间

<input type="button" value="Seek" onclick="setCurrentTime(0)">

你可以试试@http://ilstream.com/video_slides/video_slides.php

【问题讨论】:

    标签: javascript youtube youtube-api


    【解决方案1】:

    我认为您没有初始化 YouTube 播放器。
    YT.Player 可以在 onYouTubeIframeAPIReady 之后实例化。
    (请在您的控制台中使用“console.dir(player.trackingVideoId)”进行检查)

    我建议您按照以下代码实现相同的方式。
    https://developers.google.com/youtube/iframe_api_reference#Getting_Started

    更新:
    请尝试此代码,并与您的代码进行比较。
    对我来说似乎工作正常(Windows7 / Chrome 37.0.2062.124 m)。

    <!DOCTYPE html>
    <html>
      <body>
        <div id="player"></div>
        <input type="button" value="Seek0" onclick="setCurrentTime(0)" />
        <input type="button" value="Seek1" onclick="setCurrentTime(1)" />
        <script>
          var tag = document.createElement('script');
          tag.src = "https://www.youtube.com/iframe_api";
          var firstScriptTag = document.getElementsByTagName('script')[0];
          firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
          var player;
          function onYouTubeIframeAPIReady() {
            player = new YT.Player('player', {
              height: '210',
              width: '340',
              videoId: 'D77wXvwChtU',
            });
          }
          function setCurrentTime(slideNum) {
            var object = [ 60, 120 ];
            player.seekTo(object[slideNum]);
          }
        </script>
      </body>
    </html>
    

    【讨论】:

    • 我在 onYouTubeIframeAPIReady() 处初始化了它 - 如您的链接中所示。但是,我将 setCurrentTime(slideNum) 放在 onYouTubeIframeAPIReady() 函数之外,我试图把它放在里面,还有另一个错误是 setCurrentTime 没有定义。我试图寻找用户单击按钮时的特定时间
    • 我在上面的评论中添加了示例源代码。
    • 非常感谢 :) ,问题出在 value="Seek" ...正如您所说,我需要为按钮设置不同的值
    • 不幸的是,它仍然有时不起作用...检查它@@ilstream.com/video_slides/video_slides.php
    • “String.prototype.toHHMMSS”中有非法字符。请手动替换制表符。当我在这种方法中删除缩进字符时,我可以寻找视频。
    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 2011-08-25
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2017-08-30
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多