0

Google は先日何かを変更したため、モバイル サファリに iFrame として埋め込まれた Youtube に奇妙な問題があります。ページのロード中に iFrame が非表示 (一部の親 div で display:none が設定されている) で、後で表示されるように変更された場合、Youtube プレーヤーは再生されません。

解決策はありますか?iframe をリロードしようとしましたが、表示状態になると機能します。しかし、それは快適な解決策ではありません…</p>

4

1 に答える 1

1

サードパーティの youtube Iframe API を使用して、youtube プレーヤーを div にロードしていると仮定しています。YouTube のコードには実際に競合状態があり、onYouTubeIframeAPIReady が呼び出される前に div がブラウザーによってロード/解析されない場合、ビデオのロードは失敗します。Firefox ではハングアップするだけで、Chrome は問題に対処するのに十分スマートです。

解決策は、このコードを確認することです。ビデオを保持しているコンテナーが解析された後に実行されます。

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

そして、このコード...

function onYouTubeIframeAPIReady() {

グローバル スコープを持ち、スクリプトの作成後に呼び出されます。

タグクリエーターとイベントリスナーを使用して関数「クラス」を作成し、document.ready関数でオブジェクトを作成するために、これを通常解決する方法。次に、document.ready 関数のすぐ下に配置します。

function onYouTubeIframeAPIReady() {
    myVideo.apiReady();
}

「myVideo」は私が作成したクラスで、apiReady(); 含まれています。

this.apiReady = function () {
    player = new YT.Player('player', {
        height: '548',
        width: '900',
        videoId: 'VIDEO234324',
        events: {
            'onReady': onPlayerReady
        }
    });
}

これが役立つことを願っています。

于 2013-05-16T19:52:03.507 に答える