Estoy tratando de implementar un menú de navegación desplegable multinivel horizontal. Inmediatamente debajo (verticalmente) del menú, tengo un video de YouTube incrustado a través de iframe. Si paso el mouse sobre uno de los elementos de navegación de nivel principal en Firefox, el menú desplegable aparece correctamente en la parte superior del video.
Sin embargo, en Chrome e IE9, solo se ve un fragmento del menú desplegable en la pequeña región de espacio que tengo entre el menú y el iframe. El resto parece estar detrás del iframe.
El problema parece estar relacionado con el video de YouTube, no con el iframe. Para probar, apunté el iframe a otro sitio web en lugar del video, y el menú desplegable funcionó bien, incluso en IE.
- Pregunta 1: WTF?
- Pregunta 2: ¿Por qué, incluso si pongo explícitamente un
z-index:-999 !important;
iframe, este problema aún ocurre?
¿Hay algún CSS interno que incluye el código de inserción de YouTube que de alguna manera anula las cosas?
<embed wmode="transparent" ...>
sección es todo lo que necesita (al menos en Firefox) y no necesita preocuparse por configurar wmode enurl
'sparam
' s oiframe
sRespuestas:
Intente agregar wmode, parece tener dos parámetros.
No puedo encontrar una razón técnica por la que funciona, o mucha más explicación, pero mire esta consulta .
o esto
fuente
wmode
también funciona aunque no está documentado.La respuesta de Joshc fue en el camino correcto, pero descubrí que elimina por completo la
?rel=0
cadena de consulta y la reemplaza con el?wmode=transparent
elemento, lo que tiene el efecto de mostrar la lista de videos sugeridos de YouTube al final de la reproducción, aunque originalmente no No quiero que esto suceda.Cambié el código para que el
src
atributo del video incrustado se escanee primero, para ver si ya hay un signo de interrogación?
(porque esto denota la presencia de una cadena de consulta preexistente, que podría ser algo así como?rel=0
podría en teoría ser cualquier cosa que YouTube elija agregar en el futuro). Si ya hay una cadena de consulta allí, queremos preservarla, no destruirla, porque representa una configuración elegida por quien pegó en este video de YouTube, ¡y presumiblemente la eligieron por alguna razón!Entonces, si
?
se encuentra,wmode=transparent
se agregará usando el formato:&mode=transparent
para etiquetarlo al final de la cadena de consulta preexistente.Si no
?
se encuentra ninguno , el código funcionará exactamente de la misma manera que lo hizo originalmente (en la publicación de toomanyairmiles ), y se agregará?wmode=transparent
como una nueva cadena de consulta a la URL.Ahora, independientemente de lo que puede o no estar al final de la URL de YouTube como una cadena de consulta, se conserva y los
wmode
parámetros necesarios se inyectan o agregan sin dañar lo que había antes.Aquí está el código para colocar en su
document.ready
función:fuente
opaque
noOpaque
(tenga en cuenta el caso)Simplemente agregue uno de estos dos a la url de src:
fuente
Sin embargo, tengo el mismo problema en el iframe de YouTube solo en Internet Explorer.
El índice Z se ignoraba por completo, o el video flash solo aparecía en el índice más alto posible.
Esto fue lo que usé, adaptando ligeramente el script jquery anterior.
Mi código de inserción, directamente desde YouTube ...
El jQuery ligeramente adaptado de la respuesta anterior ...
Básicamente, si no selecciona Mostrar videos sugeridos cuando el video termina en su configuración de inserción, tiene un
?rel=0
al final de su"src"
URL. Así que agregué el bit de reemplazo en caso de que?rel=0
exista. De?wmode=transparent
lo contrario no funcionará.fuente
Simplemente podemos agregar
?wmode=transparent
al final de la URL de YouTube. Esto le indicará a YouTube que incluya el video con el conjunto de wmode. Entonces su nuevo código de inserción se verá así: -fuente
Solo este funcionó para mí:
Lo cargo en el archivo de Wordpress footer.php. Código encontrado en comentario aquí (gracias Gerson)
fuente
wmode = opaco o transparente al comienzo de mi cadena de consulta no resolvió nada. Este problema para mí solo ocurre en Chrome, y no en todas las computadoras. Solo una CPU. Ocurre también en vimeo, y posiblemente en otros.
Mi solución para adjuntar al evento 'mostrado' y 'oculto' de los modales de bootstrap que estoy usando, agregar una clase que establece el iframe en 1x1 píxeles y eliminar la clase cuando se cierra el modal. Parece que funciona y es fácil de implementar.
fuente
Las respuestas que se muestran a continuación no funcionaron realmente para mí, tuve un evento de clic en el contenedor y, por lo tanto, 7,8,9,10 ignoré el índice z, por lo que mi solución le dio un color de fondo al contenedor y de repente funcionó . Aunque se suponía que era transparente, así que definí el envoltorio con el color de fondo blanco, y luego la opacidad 0.01, y ahora funciona. También tengo las funciones anteriores, por lo que podría ser una combinación.
No sé por qué funciona, estoy feliz de que lo haga.
fuente
El código Javascript de BigJacko funcionó para mí, pero en mi caso primero tuve que agregar un código JQuery "noconflict". Aquí está la versión revisada que funcionó en mi sitio:
fuente
Todo lo que necesita en el iframe es:
y en la URL:
fuente