2010-10-29 16 views
133

Używanie javascript z jQuery Dodaję element iframe z adresem URL youtube, aby wyświetlić wideo na stronie internetowej, jednak kod do osadzenia, który zostanie załadowany do iframe z youtube nie ma wmode = "Opaque", dlatego Pola modalne na stronie są wyświetlane pod filmem na youtube.Youtube iframe Wmode wydanie

Jakieś pomysły na rozwiązanie problemu?

+0

Czy to nadal jest problem? Użyłem tego rozwiązania wcześniej, ale nie mogę odtworzyć pierwotnego problemu w najnowszym Chrome/Firefox/IE. – marcovtwout

Odpowiedz

237

Spróbuj dodać ?wmode=opaque do adresu URL lub &wmode=opaque, jeśli już istnieje parametr.

Jeśli to nie działa, spróbuj tego zamiast, &wmode=transparent, który będzie działał również w przeglądarce IE.

+1

fajnie!działa na firefox i chrome, ale z jakiegoś powodu nie działa na IE ... żadnych pomysłów? – danfromisrael

+31

spróbuj użyć & wmode = przezroczysty zamiast – Shabith

+0

nie działa ... Próbowałem również grać z z-index bezskutecznie ... – danfromisrael

81

Spróbuj dodać ?wmode=transparent na końcu adresu URL. Pracował dla mnie.

+0

"Moja przejrzystość" powinna być moim zdaniem preferowaną opcją. – Foxinni

8

Dodanie do adresu URL adresu ?wmode=opaque wydaje się rozwiązać ten problem, mimo że nie testowałem go jeszcze w IE.

Dla tych, którzy mają kłopoty z wcześniej zaproponowanym rozwiązaniem, należy pamiętać, że fabryczny znak ampersand będzie działał tylko wtedy, gdy już podajesz inne argumenty pod adresem URL. Pierwszy argument musi mieć początkowy znak zapytania: http://www.example.com?first=foo&second=bar

+0

Początkowo otrzymywałem czarny prostokąt niezależnie od tego, które wideo próbowałem pokazać .. okazało się, że maszyna testowa nie ma zainstalowanej lampy błyskowej, a dialog instalacji flasha zbytnio się skompensował! – Zeb

3

Dodaj adres URL &wmode=transparent, a gotowe, sprawdzone.

używam tej techniki w moim WordPress Plugin YouTube shortcode

Sprawdź swój kod źródłowy w przypadku napotkania jakiegokolwiek problemu.

+0

Dodawanie & wmode = przezroczysty po URL you tube Rozwiązał problem we wszystkich przeglądarkach. Dzięki za Pana Tubala, Dobra robota :) –

0

&wmode=opaque nie działa dla mnie (chrome 10), ale &wmode=transparent wyjaśnił problem od razu.

18

Jeśli używasz nowego asynchronicznego API, trzeba będzie dodać parametr tak:

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

ta opiera się na dokumentacji google i przykład tutaj: http://code.google.com/apis/youtube/iframe_api_reference.html

+7

Zauważ, że to również wymaga wmode w playerVars. Gdy jest to tylko w YT.Player, działa tylko dla odtwarzacza HTML5. Dodanie wmode do playerVars również wysyła ten parametr do obiektu Flash, który ma swój własny problem z zamówieniem. Zobacz tutaj: https://groups.google.com/forum/?fromgroups#!topic/youtube-api-gdata/OQRG5rTKBFQ Odpowiednio edytuję twoją odpowiedź. –

+1

Próbowałem tego i to nie działało. Nie znalazłem też żadnego odniesienia do wmode w dokumentacji YouTude. – sboisse

+0

Link zmienił się od pierwszego opublikowania, podobnie jak metoda ustawiania wmode. Możesz teraz ustawić dowolny parametr flash lub parametr odtwarzacza youtube poprzez playerVars. Zaktualizowałem powyższy przykład. –

1

tylko wierzchołkiem ! - upewnij się, że podałeś indeks z elementu, który ma być nad osadzonym wideo. Dodałem querystring wmode i nadal nie działało ... aż podniosłem indeks Z drugiego elementu. :)

0

Wiem, że to pytanie jest stary, ale nadal pojawia się w wynikach wyszukiwania najpopularniejszych tego problemu tak Dodaję nową odpowiedź na pomoc tych, którzy poszukują jednej dla IE:

Dodawanie do &wmode=opaque koniec adresu URL NIE działa w IE 10 ...

Jednak dodanie ?wmode=opaque rozwiązuje problem!


Znaleziono rozwiązanie to tutaj: http://alamoxie.com/blog/web-design/stop-iframes-covering-site-elements

+0

'&' i '?' Są poprawne w zależności od kolejności, w jakiej są używane i które inne ustawienia są zawarte w adresie URL. Oczywiście "?" Jest używane, jeśli jest to pierwsze (lub jedyne) ustawienie, '&' w przeciwnym razie. – Alex

+0

Tak, ale IE ma specjalne potrzeby. Po prostu spróbuj i zobacz, który działa w IE 10, a który nie. Nie próbowałem tego jeszcze w IE 11. –

0

ostatnio widziałem, że czasami flash player nie rozpoznaje &wmode=opaque, istead należy przekazać &WMode=opaque zbyt (zauważyć wielkie litery).