YouTube iframe wmodeの問題


134

JavaScriptとjQueryを使用して、YouTubeのURLを含むiframeを追加してWebサイトにビデオを表示していますが、youtubeからiframeに読み込まれる埋め込みコードにはwmode = "Opaque"がないため、ページのモーダルボックスが表示されますYouTubeビデオの下。

問題を解決する方法はありますか?


これはまだ問題ですか?以前にこのソリューションを使用しましたが、最新のChrome / Firefox / IEで元の問題を再現できません。
marcovtwout 2013年

回答:


238

?wmode=opaqueURLに追加するか&wmode=opaque、すでにパラメータがある場合は追加してください。

動作しない場合は、代わりに&wmode=transparentこれを試してください。これはIEブラウザーでも動作します。


1
いいね!FirefoxとChromeで動作しますが、何らかの理由でIEでは動作しません...何かアイデアはありますか?
danfromisrael 2010年

31
代わりに& wmode = transparentを使用してみてください
Shabith 2010年

29
"& wmode = xxxx"設定は、URLですでにパラメータを渡していることを前提としています。私はそうではなかったので、代わりに "?wmode = xxxx"をURLに追加する必要があります。
Matt Huggins、

6
違いopaquetransparentopaqueより高性能になるはずです。
ドーナツ

3
Shabith-"wmode = Opaque"は "wmode = opaque"(小文字の 'o')である必要があります
John

81

?wmode=transparentURLの最後に追加してみてください。私のために働いた。


私の意見では「透明」が推奨されるオプションです。
Foxinni 2012年

18

新しい非同期APIを使用している場合は、次のようにパラメーターを追加する必要があります。

<!-- YOUTUBE -->
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

// 3. This function creates an <iframe> (and YouTube player)
//    after the API code downloads.
var player;
var initialVideo = 'ApkM4t9L5jE'; // YOUR YOUTUBE VIDEO ID
function onYouTubePlayerAPIReady() {
    console.log("onYouTubePlayerAPIReady" + initialVideo);
    player = new YT.Player('player', {
      height: '381',
      width: '681',
      wmode: 'transparent', // SECRET SAUCE HERE
      videoId: initialVideo,      
       playerVars: { 'autoplay': 1, 'rel': 0, 'wmode':'transparent' },
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });
}

これは、Googleのドキュメントと次の例に基づいています:http : //code.google.com/apis/youtube/iframe_api_reference.html


7
このALSOはplayerVarsでwmodeも必要とすることに注意してください。YT.Playerのすぐ下にある場合、HTML5プレーヤーでのみ機能します。また、playerVarsにwmodeを追加すると、そのパラメーターがFlashオブジェクトに送信されます。これには、独自のzオーダーの問題があります。こちらをご覧ください:groups.google.com/forum/?fromgroups#!topic / youtube-api-gdata / それに応じて回答を編集します。
ディランマッコール

1
私はこれを試しましたが、うまくいきませんでした。また、YouTudeのドキュメントには、wmodeへの参照はありませんでした。
sboisse 2013年

最初に投稿してからリンクが変更され、wmodeを設定する方法も変更されました。今すぐ任意のフラッシュパラメータを設定するか、playerVarsを介してyoutubeプレーヤーパラメータを設定できます。上記の例を更新しました。
プラスチックスタージョン

URLで簡単に変更できる値を変更するためだけにAPI全体をロードすることは、完全に過剰です。これは使わないでください。
fregante 2013年

クロムレスプレーヤーを使用していて、UIの制御にJS APIをすでに使用している人もいます。私たちにとって、このソリューションは完全に素晴らしいです!ありがとう
maxijb

8

?wmode=opaqueURLに追加することで、この問題は解決したようですが、IEではまだテストしていません。

以前に提案されたソリューションで問題が発生した場合、最初のアンパサンドは、URLにすでに他の引数を指定している場合にのみ機能することに注意してください。最初の引数には最初の疑問符が必要です:http://www.example.com?first=foo&second=bar


表示しようとしているビデオに関係なく、最初は黒い四角形が表示されていました。テストマシンにフラッシュがインストールされておらず、フラッシュをインストールするためのダイアログのオフセットが大きすぎることがわかりました。
Zeb

3

&amp;wmode=transparentURLに追加すれば完了です。

私は自分のワードプレスプラグインYouTubeショートコードでそのテクニックを使用しています

問題が発生した場合は、ソースコードを確認してください。


YouTubeのURLの後に&amp; wmode = transparentを追加するすべてのブラウザで問題が解決しました。Tubal氏、ありがとうございます。よろしく

1

ほんのヒント!-埋め込みビデオの上に置きたい要素のz-indexを必ず上にしてください。wmodeクエリ文字列を追加しましたが、それでも機能しませんでした...他の要素のz-indexを上げるまで。:)


0

&wmode=opaque私(Chrome 10)では機能しませんでしたが&amp;wmode=transparent、問題はすぐに解決しました。


0

私はこれが古い質問であることを知っていますが、それでもこの問題の上位の検索で出てくるので、IEの質問を探している人を助けるために新しい回答を追加します。

&wmode=opaqueURLの最後に追加してもIE 10では機能しません...

ただし、追加すると?wmode=opaqueうまくいきます!


このソリューションはここにあります:http : //alamoxie.com/blog/web-design/stop-iframes-covering-site-elements


&および?どちらも、使用される順序と、URLに含まれるその他の設定に応じて正しくなります。?これが最初の(または唯一の)設定である&場合は、明らかに使用されます。
Alex

はい。ただし、IEには特別なニーズがあります。試してみて、IE 10で機能するものと機能しないものを確認してください。IE 11ではこれをまだ試していません。
アンバー6月

0

最近、Flashプレーヤーがを認識しない場合があることを確認しました&wmode=opaque。代わりに、パス&WMode=opaqueも大文字にする必要があります(大文字に注意)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.