ごめんなさい。問題の解決策は、コーディング/実装は「簡単」ですが、維持するのは面倒で困難です。
Youtube API では、YT.Player オブジェクトを iframe 内 (iframe 内の div など) に埋め込むことはできません。これは、iframe ドキュメントではなく、window オブジェクト内で「プレーヤー」ノードを検索するためです。
したがって、これに対する簡単なホットフィックスは、API ファイルのコピーを保存し、それらを変更してこの機能を追加することです。明らかに、その瞬間から、これらのファイルを提供し、ファイルが非推奨にならないように更新するのはあなたの責任です。
解決策は次のとおりです(当然のことながら、JQueryはYoutube APIの前にロードされます):
https://developers.google.com/youtube/iframe_api_reference#Getting_Startedで提供されている基本例を使用すると、<iframe id="if"></iframe>
代わりにこれ
が<div id="player"></div>
あり、後でその iframe 内にプレーヤー div を追加すると思います。
<body>
<iframe id="if"></iframe>
<script>
$('#if').contents().find('body').append($('<div id="player"></div>'));
// ...
したがって、 を定義するときは、コンストラクターonYoutubeAPIReady()
に 1 つのパラメーターを追加する必要があります。YT.Player
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', { /* options */ }, $('#if') );
つまり$('#if')
、プレーヤーを埋め込む iframe 要素です。
iframe_api
このファイルでは、ロードするスクリプトの src を変更するだけです。
から
a.src = 'http://s.ytimg.com/yts/jsbin/www-widgetapi-vflOb0oo1.js
(widget.jsはa.src = './widget.js';
www-widgetapi-vflOb0oo1.js のコピーです)。
最後に、widget.js で:
ここで、次の 2 つの関数を変更する必要があります:function S(a,b)
とfunction Y(a,b)
.
まず、iframe パラメータを取得しますfunction Y(a,b)
。function Y(a,b,c)
次に、その本体で次のように変更S.call(this,a,new nb(b));
しますS.call(this,a,new nb(b),c);
第二に、function S(a,b)
へfunction S(a,b, dom)
とc = document
へ
c= dom === undefined ? document : dom.contents()[0]
。
これで、iframe 内に Youtube プレーヤーがあり、親ウィンドウから使用できるようになりました。
役に立つことを願っています!;)