制御ができないのでYoutubeに埋め込むためのもの。getElementById('xyz').playVideo()ではなく機能しているのでしょうか。

StackOverflow https://stackoverflow.com/questions/2217543

質問

OKだとどうなるかはわからないの間違った後も、以下のGoogle docsの読解とご提案いStackoverflow.なぜすることはできないのでしょうかを制御Youtubeに埋め込む私のウェブページに表示すべき事は何か?

だHTMLファイルを作成し、 <body> :

<object id="o1" width="480" height="295">
  <param name="movie" 
    value="http://www.youtube.com/v/qCTLCNmnlKU&hl=en_US&fs=1&enablejsapi=1&">
  </param>
  <param name="allowFullScreen" value="true"></param>
  <param name="allowscriptaccess" value="always"></param>
  <embed id="e1" 
    src="http://www.youtube.com/v/qCTLCNmnlKU&hl=en_US&fs=1&enablejsapi=1&" 
    type="application/x-shockwave-flash" 
    allowscriptaccess="always" allowfullscreen="true" width="480" height="295">
  </embed>
</object>

でもようとするとい:

// I get an object. Yay.

document.getElementById('e1');

// This generates "...playVideo is not a function"

document.getElementById('e1').playVideo();

助かります!なぜですか?感謝。

役に立ちましたか?

解決

ですが、こちらの答えは見つかり一つの小さな行のテキストのAPIのページ: http://code.google.com/apis/youtube/js_api_reference.html

"Note:試合の話であれば、ファイルをwebサーバとしてのFlash playerを制限話 とローカルファイル のインターネット"でした。

うとして発展し続ける自分のMac pcかったので、下

  1. 私の編集 /etc/hosts ファイルを含むエントリに戻っlocalhost:

    127.0.0.1   testhost.com
    
  2. 私の編集 /etc/apache2/httpd.conf ファイルを追加するバーチャルホストの入力を指帰り開発ディレクトリ:

    <VirtualHost *:80>
        ServerName testhost.com
        DocumentRoot /Users/amy/flashproj
        <Directory /Users/amy/flashproj>
            AllowOverride all
            Options MultiViews Indexes FollowSymLinks
            Allow from All
        </Directory>
    </VirtualHost>
    
  3. Apacheを再起動:

    sudo apachectl restart
    
  4. 閲覧に戻り、自分のlocalhostって新しい仮想サーバー:

    http://testhost.com
    

出来上がり.が完全に動作するようになりました。できるクエリのページのプレイヤー:

document.getElementById('e1');                // OK
document.getElementById('e1').playVideo();    // OK!

ふう!No onYouTubePlayerReady() 必ます。

他のヒント

YouTubeのプレイヤーは、まだあなたがそれを使用しようとしている時にロードされていません。すぐにそれがロードされると自動的に発射される特別なコールバック関数があります。

  

表示するHTMLページ   クロムレスプレーヤーを実装する必要があります。   コールバック関数の名前   onYouTubePlayerReady。 APIの意志   プレイヤーがあるときに、この関数を呼び出します   完全にロードされ、APIはへの準備ができています   電話を受けるます。

のYouTubeのJavaScriptプレーヤAPIリファレンスに。

により、

そのため、あなたは次のようにコードを書き換えることができます:

<script type="text/javascript">
function onYouTubePlayerReady(playerId) {
    var ytplayer = document.getElementById('e1');
    ytplayer.playVideo();
}
</script>
playerapiidハンドラで区別するために、それらの多くがある場合は、

また、プレーヤーを埋め込むながらonYouTubePlayerReadyを渡す気にすることができます。

あなたは、ID "01" を使用した場合に代わりに "E1"?

の何が起こります

OKだけでなく、このページに: http://code.google.com/apis 「swfobject」ライブラリが利用できるようにするために、そのAPIために含める必要があるということに私には思えるを/youtube/js_api_reference.html。私はそれを試してみましょう。

[編集] OK、ここで私が持っているものです。

<html>
  <head>
    <script src='http://code.jquery.com/jquery-1.4.1.js'></script>
    <script src='http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'></script>
    <script>
      window['onYouTubePlayerReady'] = function onYouTubePlayerReady(playerId) {
        player = document.getElementById("zebra");
        player.playVideo();
      };
      $(function() {
         swfobject.embedSWF(
         "http://www.youtube.com/v/qCTLCNmnlKU?hl=en_US&fs=1&enablejsapi=1&playerapiid=ytplayer", 
          "foo",
          "480", "295",
          "8",
          null, null,
          { allowScriptAccess: 'always' },
          { id: 'zebra' }
        );
      });
    </script>
  </head>
  <body>
    <div id='foo'>Foo</div>
  </body>
</html>

これは動作しますが、私は実際のWebサーバーからそれを果たすとき妙な話だが、それだけで動作します。私はそれがローカルファイルに入れ、ブラウザでそれをロードした場合、それは動作しません。私はなぜ知らないが、私は絶対にフラッシュの専門家、またはYouTubeの専門家ではないんです。

上記で入力しているものと同じ( http://gutfullofbeer.net/youtube.html を参照してください。 )

私は..ユーチューブプレーヤー変数に関連するすべての問題は、ローカルで実行するために関連した2日間、この問題に貼り付けました。窓/ホスト経由でアドレスを偽造した後、それは完璧に動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top