¿Es posible cambiar los estilos de un div que reside dentro de un iframe en la página utilizando sólo CSS?El uso de CSS para afectar div style dentro de iframe
Respuesta
En resumen, no.
No se puede aplicar CSS a HTML que se carga en un iframe, a menos que tenga control sobre la página cargada en el marco flotante debido a las restricciones de recursos entre dominios.
Esto es cierto pero realmente no ayuda a las personas dar un ejemplo de cómo –
probablemente no sea la forma en que está pensando. el iframe debería tener <link>
en el archivo css también. Y no puedes hacerlo incluso con javascript si está en un dominio diferente.
¿Puede dar un ejemplo de cómo se puede hacer esto? ¿Quiere decir algo como '
Necesita JavaScript. Es lo mismo que hacerlo en la página principal, excepto que debe poner un prefijo al comando JavaScript con el nombre del iframe.
Recuerde, se aplica la misma política de origen, por lo que sólo puede hacer esto a un elemento de marco flotante que viene de su propio servidor.
utilizo el marco Prototype para que sea más fácil:
frame1.$('mydiv').style.border = '1px solid #000000'
o
frame1.$('mydiv').addClassName('withborder')
veo esta pregunta similar http://stackoverflow.com/questions/1962707/how-to-give-style-to-iframed-page-content-using-parent-pages-css pero no podemos cambiar el estilo si marco es de otro servidor? –
Eso es correcto. El contenido de Iframe está sujeto a la política del mismo dominio. Si es de tu dominio, puedes controlarlo, de lo contrario, estás bloqueado. Esto evita todo tipo de secuestro de páginas basado en Iframe. –
No es exactamente una solución de "solo CSS", pero es lo suficientemente buena para mí. +1 –
La respuesta rápida es: No, lo siento.
No es posible utilizando sólo CSS. Básicamente, necesitas tener control sobre el contenido del iframe para darle un estilo. Hay métodos que usan javascript o el idioma de su elección (sobre el que he leído un poco, pero no estoy familiarizado) para insertar dinámicamente algunos estilos necesarios, pero necesitaría un control directo sobre el contenido del iframe, que suena como si no tuvieras
Sí. Echar un vistazo a este otro hilo para más detalles: How to apply CSS to iframe?
var cssLink = document.createElement("link");
cssLink.href = "style.css";
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
frames['frame1'].document.body.appendChild(cssLink);
¿frame1 es la identificación del iframe? –
Sí, frame1 es el id del iframe. –
Sí, es posible, aunque engorroso. Debería imprimir/hacer eco del código HTML de la página en el cuerpo de la página y luego aplicar una función de cambio de regla CSS. Utilizando los mismos ejemplos que se mencionan anteriormente, esencialmente utilizaría un método de análisis para encontrar los divs en la página, y luego aplicarle el CSS y luego volver a imprimir/repetir el eco para el usuario final. No necesito esto, así que no quiero codificar esa función en cada elemento del CSS de otra página web para su incorporación.
Referencias:
La pregunta específicamente pregunta "usar CSS solamente". Con eso en mente, tu respuesta es incorrecta. –
usar jQuery y esperar hasta que la fuente está cargado, Esta es la forma en que he logrado (Usado intervalo angular, puedes u SE javascript método setInterval):
var addCssToIframe = function() {
if ($('#myIframe').contents().find("head") != undefined) {
$('#myIframe')
.contents()
.find("head")
.append(
'<link rel="stylesheet" href="app/css/iframe.css" type="text/css" />');
$interval.cancel(addCssInterval);
}
};
var addCssInterval = $interval(addCssToIframe, 500, 0, false);
¿por qué no usa iframe evento cargado? – ProllyGeek
sí, definitivamente se puede utilizar ese –
puede recuperar el contenido de un iframe
primero y luego usar jQuery
selectores contra ellos como de costumbre.
$("#iframe-id").contents().find("img").attr("style","width:100%;height:100%")
$("#iframe-id").contents().find("img").addClass("fancy-zoom")
$("#iframe-id").contents().find("img").onclick(function(){ zoomit($(this)); });
¡Buena suerte!
no funciona: no detectada DOMException: No se pudo leer la propiedad 'contentDocument' de 'HTMLIFrameElement': Bloqueado un marco con origen "http: // host" de acceder a un marco de origen cruzado . – tubbo
No es posible desde el lado del cliente. Se generará un error de javascript. "Error: Permiso denegado para acceder a la propiedad" documento "" ya que el iframe no es parte de su dominio. La única solución es buscar la página desde el código del lado del servidor y cambiar la CSS necesaria.
Esta respuesta es correcta en su contenido, pero se relaciona con JavaScript, mientras que la pregunta se relaciona con CSS. La respuesta puede ser que necesitas usar JavaScript pero no lo dices. La respuesta también supone que el contenido en el iFrame proviene de un dominio diferente, lo que no siempre es el caso. Por último, el mensaje exacto variará de un navegador a otro. – pwdst
Una especie de forma de hack-ish de hacer las cosas es como dijo Eugene. Terminé siguiendo su código y vinculo a mi Css personalizado para la página. El problema para mí fue que, con una línea de tiempo de twitter, tienes que hacer un poco de eludir Twitter para anular su código un smidgen. Ahora tenemos un cronograma continuo con nuestro CSS, I.E. Fuente más grande, altura de línea adecuada y la barra de desplazamiento oculta para alturas mayores que sus límites.
var c = document.createElement('link');
setTimeout(frames[0].document.body.appendChild(c),500); // Mileage varies by connection. Bump 500 a bit higher if necessary
Al parecer, se puede hacer a través de jQuery:
$('iframe').load(function() {
$('iframe').contents().find("head")
.append($("<style type='text/css'> .my-class{display:none;} </style>"));
});
Ya no puede usar esto debido a la misma política de origen en el navegador Chrome. El mensaje de error: 'No detectada DOMException: no se pudo leer la propiedad 'contentDocument' de 'HTMLIFrameElement': Bloqueado un marco con origen **** para acceder a un marco de origen cruzado. – Mohammad
- 1. envolviendo el texto dentro de div - css
- 2. Contenido del centro CSS dentro de div
- 3. Cómo cerrar iframe desde dentro de iframe?
- 4. Cómo encontrar un div dentro de un iframe
- 5. CSS Style Herencia
- 6. DIV dentro de otro DIV dentro de otro DIV con CSS
- 7. div overlay sobre iframe
- 8. Css, enlaces de centrado dentro de div
- 9. Selección de un elemento dentro de Div para decoración CSS
- 10. remove css hover style
- 11. muestra solo un div dentro de un iframe (javascript, JQuery ...)
- 12. diseño CSS, el uso de CSS para reordenar DIVs
- 13. ¿Cómo cambiar un relleno DIV sin afectar el ancho/alto?
- 14. El uso de un iframe en un DIV elimina el resto de la página
- 15. Uso jQuery .Filter() para seleccionar texto específico dentro div
- 16. El uso de un DIV para enmascarar otra DIV
- 17. En la extensión de Chrome, las secuencias de comandos de contenido no pueden afectar dentro del iframe.
- 18. <style> etiqueta dentro de cualquier elemento seguirá funcionando?
- 19. iframe frente div + jQuery
- 20. ¿Puedo aplicar CSS a los elementos dentro de un iframe?
- 21. Necesita ayuda para obtener la expresión XPath para span dentro de una ventana flotante Iframe
- 22. Ajuste iFrame CSS para mostrar: ninguno durante la carga
- 23. CSS div fijo dentro del contenedor
- 24. Cómo seleccionar div dentro de div dentro de div con jquery
- 25. ¿Cuál es el uso de style = "clear: both"?
- 26. Alinear contenidos dentro de un div
- 27. tratando de alinear verticalmente div dentro de div
- 28. ¿Cómo establecer un mapa para div dentro de otro div?
- 29. Jquery dentro de Iframe
- 30. CSS: altura automática conteniendo div, altura del 100% en el fondo div dentro que contiene div
duplicado posible de [Cómo aplicar CSS para iframe?] (Http://stackoverflow.com/questions/217776/how-to-apply-css-to-iframe) –