制御ができないのでYoutubeに埋め込むためのもの。getElementById('xyz').playVideo()ではなく機能しているのでしょうか。
-
19-09-2019 - |
質問
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かったので、下
私の編集 /etc/hosts ファイルを含むエントリに戻っlocalhost:
127.0.0.1 testhost.com
私の編集 /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>
Apacheを再起動:
sudo apachectl restart
閲覧に戻り、自分の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日間、この問題に貼り付けました。窓/ホスト経由でアドレスを偽造した後、それは完璧に動作します。