Problema wmode iframe su Youtube


134

Usando javascript con jQuery, sto aggiungendo un iframe con un URL di YouTube per visualizzare un video su un sito Web, tuttavia il codice di incorporamento che viene caricato nell'iframe da YouTube non ha wmode = "Opaque", quindi vengono visualizzate le caselle modali sulla pagina sotto il video di YouTube.

Qualche idea su come risolvere il problema?


Questo è ancora un problema? Ho usato questa soluzione prima ma non riesco a riprodurre il problema originale nell'ultimo Chrome / Firefox / IE.
marcovtwout,

Risposte:


238

Prova ad aggiungere ?wmode=opaqueall'URL o &wmode=opaquese esiste già un parametro.

Se non funziona, prova questo, &wmode=transparentche funzionerà anche nel browser IE.


1
simpatico! funziona su Firefox e Chrome ma per qualche motivo non funziona su Internet Explorer ... qualche idea?
danfromisrael,

31
prova invece a utilizzare & amp; wmode = transparent
Shabith,

29
L'impostazione "& amp; wmode = xxxx" presuppone che tu stia già passando parametri nell'URL. Non ero nel mio caso, quindi ho bisogno di aggiungere "? Wmode = xxxx" all'URL.
Matt Huggins,

6
Differenze tra opaqueetransparent . opaquedovrebbe essere più performante.
Ciambella

3
Shabith - "wmode = Opaque" dovrebbe essere "wmode = opaque" (minuscola 'o')
John

81

Prova ad aggiungere ?wmode=transparentalla fine dell'URL. Ha funzionato per me.


Secondo me, "trasparente" dovrebbe essere l'opzione preferita.
Foxinni,

18

Se si utilizza la nuova API asincrona, sarà necessario aggiungere il parametro in questo modo:

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

Questo si basa sulla documentazione di Google ed esempio qui: http://code.google.com/apis/youtube/iframe_api_reference.html


7
Nota che anche questo ha bisogno di wmode in playerVars. Quando è appena sotto YT.Player, funzionerà solo per il lettore HTML5. L'aggiunta di wmode a playerVars invia anche quel parametro all'oggetto Flash, che ha il suo problema con l'ordine z. Vedi qui: groups.google.com/forum/?fromgroups#!topic/youtube-api-gdata/… Modificherò di conseguenza la tua risposta.
Dylan McCall,

1
Ho provato questo e non ha funzionato. Inoltre, non ho trovato alcun riferimento a wmode nella documentazione di YouTude.
sboisse,

Il collegamento è cambiato da quando ho pubblicato per la prima volta, così come il metodo per impostare wmode. Puoi impostare qualsiasi parametro flash ora o il parametro player di YouTube tramite playerVars. Ho aggiornato l'esempio sopra.
Storione di plastica,

Il caricamento di un'intera API solo per modificare un valore che può essere facilmente modificato nell'URL è un overkill totale. Non usare questo.
fregante,

Ci sono alcuni di noi che lavorano con il player Chromeless e già utilizzano l'API JS per controllare l'interfaccia utente. Per noi, questa soluzione è totalmente incredibile! Grazie
maxijb il

8

L'aggiunta ?wmode=opaqueall'URL sembra risolvere questo problema per me, anche se non l'ho ancora testato in IE.

Per quelli di voi che hanno problemi con la soluzione proposta in precedenza, nota che una e commerciale iniziale funzionerà solo se stai già fornendo altri argomenti all'URL. Il primo argomento deve avere un punto interrogativo iniziale:http://www.example.com?first=foo&second=bar


Inizialmente stavo ottenendo un rettangolo nero a prescindere dal video che stavo provando a mostrare .. alla fine la macchina di prova non aveva il flash installato e il dialogo per l'installazione del flash era troppo sfalsato!
Zeb,

3

Aggiungi &amp;wmode=transparentall'URL e il gioco è fatto, testato.

Uso questa tecnica nel mio shortcode YouTube del mio plugin wordpress

Controlla il suo codice sorgente in caso di problemi.


Aggiunta di & amp; wmode = transparent dopo l'URL You Tube Risolto il problema su tutti i browser. Grazie per il signor Tubal, buon lavoro :)

1

Solo un consiglio! - Assicurati di aumentare l'indice z sull'elemento che desideri posizionare sul video incorporato. Ho aggiunto la querystring wmode, e ancora non ha funzionato ... fino a quando non ho aumentato l'indice z dell'altro elemento. :)


0

&wmode=opaquenon ha funzionato per me (Chrome 10) ma ha &amp;wmode=transparentrisolto il problema.


0

So che questa è una vecchia domanda, ma emerge ancora nelle prime ricerche per questo problema, quindi sto aggiungendo una nuova risposta per aiutare coloro che cercano uno per IE:

L'aggiunta &wmode=opaquealla fine dell'URL NON funziona in IE 10 ...

Tuttavia, l'aggiunta ?wmode=opaquefa il trucco!


Ho trovato questa soluzione qui: http://alamoxie.com/blog/web-design/stop-iframes-covering-site-elements


&e ?sono entrambi corretti in base all'ordine in cui vengono utilizzati e alle altre impostazioni incluse nell'URL. Ovviamente ?viene utilizzato se questa è la prima (o unica) impostazione, &altrimenti.
Alex,

Sì, ma IE ha esigenze particolari. Provalo e vedi quali funzionano in IE 10 e quali no. Non l'ho ancora provato in IE 11.
Ambra giugno

0

recentemente ho visto che a volte il flash player non riconosce &wmode=opaque, ma dovresti passare &WMode=opaqueanche tu (nota la maiuscola).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.