2010-10-29 12 views
133

Unter Verwendung von Javascript mit jQuery, ich füge ein iframe mit einer youtube URL hinzu, um ein Video auf einer Webseite anzuzeigen, aber der eingebettete Code, der in den iframe von Youtube geladen wird, hat nicht wmode = "Opaque" deshalb Modale Boxen auf der Seite werden unter dem YouTube-Video angezeigt.Youtube iframe wmode Ausgabe

Irgendwelche Ideen, wie man das Problem löst?

+0

Ist das immer noch ein Problem? Ich habe diese Lösung bereits verwendet, kann das ursprüngliche Problem im aktuellen Chrome/Firefox/IE jedoch nicht reproduzieren. – marcovtwout

Antwort

237

Versuchen Sie, die URL ?wmode=opaque oder &wmode=opaque hinzuzufügen, wenn bereits ein Parameter vorhanden ist.

Wenn es nicht funktioniert, versuchen Sie stattdessen &wmode=transparent, die auch im IE-Browser funktioniert.

+1

nett!funktioniert auf firefox & chrome aber aus irgendeinem Grund funktioniert nicht auf IE ... irgendwelche Ideen? – danfromisrael

+31

versuchen Sie & wmode = transparent stattdessen – Shabith

+0

funktioniert nicht ... Ich habe auch versucht, mit dem Z-Index erfolglos versucht ... – danfromisrael

81

Versuchen Sie, am Ende der URL ?wmode=transparent hinzuzufügen. Arbeitete für mich.

+0

'Transparent' sollte meiner Meinung nach die bevorzugte Option sein. – Foxinni

8

Hinzufügen von ?wmode=opaque zu der URL scheint dieses Problem für mich zu lösen, obwohl ich es noch nicht in IE getestet habe.

Für diejenigen von Ihnen, die Probleme mit der zuvor vorgeschlagenen Lösung haben, beachten Sie, dass ein kommerzielles Ampersand nur funktioniert, wenn Sie bereits andere Argumente an die URL liefern. Das erste Argument muss ein erstes Fragezeichen haben: http://www.example.com?first=foo&second=bar

+0

Ich bekam anfangs ein schwarzes Rechteck, unabhängig von dem Video, das ich zeigen wollte. Es stellte sich heraus, dass die Testmaschine keinen Flash installiert hatte und der Dialog zum Installieren des Flashs zu sehr verschoben war! – Zeb

3

Fügen Sie &wmode=transparent zur URL hinzu und Sie sind fertig, getestet.

Ich verwende diese Technik in meinem eigenen Wordpress-Plugin YouTube shortcode

seinen Quellcode Überprüfen Sie, ob Sie ein Problem auftritt.

+0

Hinzufügen von & wmode = transparent nach der URL du you tube Das Problem wurde in allen Browsern gelöst. Vielen Dank für Mr Tubal, gute Arbeit :) –

0

&wmode=opaque funktionierte nicht für mich (Chrom 10), aber &wmode=transparent löste das Problem bis oben.

18

Wenn Sie die neue asynchrone API verwenden, müssen Sie die Parameter wie so hinzuzufügen:

<!-- 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 
     } 
    }); 
} 

Dies basieren hier auf die Google-Dokumentation und Beispiel: http://code.google.com/apis/youtube/iframe_api_reference.html

+7

Beachten Sie, dass dies auch Wmode in PlayerVars benötigt. Wenn es sich nur unter YT.Player befindet, funktioniert es nur für den HTML5-Player. Das Hinzufügen von wmode zu playerVars sendet diesen Parameter auch an das Flash-Objekt, das sein eigenes Z-Reihenfolge-Problem hat. Siehe hier: https://groups.google.com/forum/?fromgroups#!topic/youtube-api-gdata/OQRG5rTKBFQ Ich werde Ihre Antwort entsprechend bearbeiten. –

+1

Ich habe das versucht und es hat nicht funktioniert. Ich habe auch keinen Hinweis auf wmode in der YouTude-Dokumentation gefunden. – sboisse

+0

Der Link wurde seit der ersten Veröffentlichung geändert, ebenso wie die Methode zum Einstellen des Wmode. Sie können jetzt einen beliebigen Flash-Parameter oder Youtube-Player-Parameter über playerVars einstellen. Ich habe das obige Beispiel aktualisiert. –

1

Nur ein Tipp ! - stellen Sie sicher, dass Sie den Z-Index für das Element, das Sie über das eingebettete Video haben möchten, aufstellen. Ich habe die wmode Querystring hinzugefügt, und es hat immer noch nicht funktioniert ... bis ich den Z-Index des anderen Elements erhöht. :)

0

Ich weiß, dass dies eine alte Frage, aber es kommt immer noch für dieses Problem in den Top-Suchanfrage, so bin ich eine neue Antwort Hinzufügen der Suche nach einem für den IE zu helfen:

Hinzufügen &wmode=opaque zu Das Ende der URL funktioniert NICHT in IE 10 ...

Allerdings fügt das Hinzufügen ?wmode=opaque den Trick!


diese Lösung hier gefunden: http://alamoxie.com/blog/web-design/stop-iframes-covering-site-elements

+0

'&' und '?' Sind beide korrekt, je nachdem, in welcher Reihenfolge sie verwendet werden und welche anderen Einstellungen in der URL enthalten sind. Offensichtlich wird '?' Verwendet, wenn dies die erste (oder einzige) Einstellung ist, '&' andernfalls. – Alex

+0

Ja, aber IE hat spezielle Bedürfnisse. Probieren Sie es aus und sehen Sie, was in IE 10 funktioniert und was nicht. Ich habe das noch nicht in IE 11 probiert. –

0

vor kurzem sah ich, dass manchmal der Flash Player nicht &wmode=opaque nicht erkennt, Istead Sie &WMode=opaque auch (man beachte die Großschreibung) passieren sollte.