0

これは比較的簡単なことのように思えますが、Web 上の例の欠如 (および JS API の非推奨) に頭が回転しているので、ここに進みます。YouTube ビデオが特定の時間に達したときに実行するコードが必要です。この例は、ここここで見ることができます。

私がやろうとしていることは、はるかに複雑ではありません。ビデオが 3 秒になったら、ページにテキストを入れたいと思います。それでおしまい。
http://jsfiddle.net/StephanieQ/2sj9smnd/

 var youtubetime;
function onPlayerStateChange(event){
    if(event.data==1) { // playing
        myTimer = setInterval(function(){ 
            youtubetime = Math.round(player.getCurrentTime()*10)/10;
            $("#timeHolder").text(youtubetime);
            //return youtubetime;
        }, 100);
    }
    else { // not playing
        clearInterval(myTimer);
    }
}

if( youtubetime > 3  ) {
     $("#results").text("Working!");

しかし、うまくいきません。parseFloat (player.getCurrentTime(); は数値を返す必要があるため、これは必要ないはずです) を試しましたが、役に立ちません。下部の div に小数点以下 1 桁までの現在の時刻が表示されているため、使用している変数が定義され、機能していることは明らかです。

なぜこれが機能しないのですか?とてもシンプルなようです...

注: YouTube の JS API は廃止されたため、iframe API のみ。

編集: setInterval が私の救いの鍵を握っています!

setInterval(function () {
if (youtubetime > 3) { $("#results").text("Works!"); } }, 100);

私はアホです...

4

1 に答える 1

1

not_a_bot の提案に従って、自分で解決したので、自分の質問に答えるために編集を追加します。おそらく他の人はこれから学ぶことができます。

setInterval を使用して、変数 youtubetime が 3 秒を超えているかどうかを 10 分の 1 秒 (100ms) ごとにチェックしています。この定期的なチェックがなければ、無名関数は機能しません (それ以外の場合、変数はページの読み込み時にのみチェックされます)。

setInterval(function () {
if (youtubetime > 3) { $("#results").text("Works!"); } }, 100);

知識は力だから!

于 2015-06-30T23:28:03.797 に答える