2012-03-21 27 views
8

.seekTo()はJavascript APIで動作しますが、私はiFrame APIで動作させることができません。この方法はサポートされていますか?以下のコードは、ビデオを正常に埋め込み、プレーヤーオブジェクトのconsole.logを正常に反映します。私は、エラーメッセージ "player.seekToは関数ではありません"をコンソールに表示します。YouTube iFrame API .seekTo()メソッドではありませんか?

<script> 
     var tag = document.createElement('script'); 
     tag.src = "http://www.youtube.com/player_api"; 
     var firstScriptTag = document.getElementsByTagName('script')[0]; 
     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
     var player; 
     function onYouTubePlayerAPIReady() { 
      player = new YT.Player('player', { 
       height: '390', 
       width: '640', 
       videoId: 'u1zgFlCw8Aw' 
      }); 
     } 
     $(window).load(function(){ 
      jQuery('#test').click(function(){ 
       //console.log('test'); 
       console.log(player); 
       player.seekTo(25); 
       return false; 
      }); 
     }); 
    </script> 
    <a href="#" id="test">Test</a> 

任意のアイデア?ありがとう!

答えて

0

私はあなたがそれを試みて失敗したとは思わないので、すべてのjavascriptメソッドがまだ実験的なiframe APIに組み込まれているわけではありません。しかし、私は詳細にiframe APIを使用していない。

2

これは意図したとおりに動作します:http://jsfiddle.net/JbwY4/(FF 11、Chrome 17)。

  1. ID playerとコンテナが定義されています:<div id="player"></div>

    は、以下の条件が満たされていることを確認してください。

  2. コードはで、延期されていませんです。つまり、onloadイベント内、$(document).readysetTimeoutなどではありません。そうしないと、IFrame APIが読み込まれず、コードが機能しなくなります。
  3. jQueryが読み込まれています。
+0

#testリンクをクリックすると、動画が意図したとおりに再生されると言っていますか(あなたのスニペットは私のものではないためです)。ビデオの埋め込みに問題はありません。seekTo()関数を動作させるのに問題があります。 –

+0

FFやSafariで試してみましたが、うまくいきました。何らかの理由でOSX上のChromeが#testリンクをクリックしても何もしません。コンソールは私に同じ "player.seekTo is not a function"エラーを与えています。 –

+0

@thechrisvoth私は、OSX VM(OS X Lion)の作成という面倒を見て、Chrome 18.0.1025.142をインストールしました。ビデオはうまく再生されませんが(Mac/Flash/Chromeのバグ?)、 'player.seekTo'メソッド**は**動作します。 –

1

メソッドは、onReadyイベントの後でのみ利用できます。ここで

は100Sで再生を開始例を次に示します。

http://jsfiddle.net/9RQK3/

+1

あなたの例は私を求めていません... –

+0

どのブラウザを使いますか? FFとChromeでテストしたところ、うまくいきました。 – stewe

+0

私はFFとSafariで試してみました。何らかの理由でOSX上のChromeが検索されません。 –

6

はここFYI

を働く新しいiframeのAPIを使用してan updated jsfiddleです:あなただけの純粋なHTMLはあなたを埋め込むインラインフレームを使用している場合APIの開始時間

<iframe width="640" height="390" 
     src="//www.youtube.com/embed/p2H5YVfZVFw?start=30" 
     frameborder="0" allowfullscreen></iframe> 

?start=30を置くことができますCERTAでビデオを開始することができますこのような時間に。 プレーヤーの再生が開始されたか、それは何もしませんした後にのみ、seekToを呼び出すことができますstartパラメータ

function onYouTubePlayerAPIReady() { 
    player = new YT.Player('player', { 
     height: '390', 
     width: '640', 
     videoId: 'p2H5YVfZVFw', 
     playerVars: { 'start': 159, 'autoplay': 1, 'controls': 1 }, 
     events: { 
     'onReady': onPlayerReady, 
     'onStateChange': onPlayerStateChange, 
     } 

    }); 

を使用してください。 playerStateChangeコールバックを確認してください:

onStateChange': onPlayerStateChange 

は、このコールバック関数

function onPlayerStateChange(evt) 
{  
    if (evt.data==1) 
    { 
     // this will seek to a certain point when video starts 
     // but you're better off using 'start' parameter 
     // player.seekTo(22); 
    } 
} 

jsFiddleは30、60、90秒に追求する下部のボタンを持っているを追加します。それは 'ローマ'と韻を踏むすべてのブラウザでテストされています。それが開くと、player.seekToファンクションタイプのアラートボックスが表示されます。これが 'undefined'と表示された場合は問題があります。

関連する問題