Pregunta

La pregunta de cómo hacer que su iframe se ajuste al 100% de su contenido (usando JavaScript) ya ha sido respondida en el foro ... para iframes que muestran contenido del mismo dominio solamente .

Mis preguntas: ¿Es posible cambiar el tamaño de un iframe para que se ajuste al contenido cuando el atributo iframe src es para una página fuera del dominio de la página que contiene el marco? Las características de seguridad del navegador que rodean las secuencias de comandos entre sitios me impiden acceder al objeto de documento para el iframe.

Estoy buscando cualquier solución creativa. Uno de mis pensamientos era detectar de alguna manera que las barras de desplazamiento eran visibles en el iframe, y aumentar gradualmente la altura hasta que no lo fueran. Lamentablemente, tampoco puedo encontrar ninguna forma de detectar barras de desplazamiento visibles. Ideas?

Tenga en cuenta que estoy buscando una solución del lado del cliente.

Respuestas:


Dave

El problema aún existe: no sé la altura del documento remoto antes de tiempo, por lo que no puedo configurarlo desde una base de datos o valor de cadena de consulta.


dusoft

100% en el iframe en CSS no lo establecerá en el 100% del contenido dentro del iframe, sino en relación con la página o el elemento que lo contiene (es decir, un div o algo).

¿Fue útil?

Solución

(Mi respuesta a una pregunta similar )

no es posible hacer esto sin cierto control sobre el iframed de la página debido al modelo de seguridad del navegador. Si fuera posible, eso sería un problema de seguridad y tendría que solucionarse.

Aunque hacer que el sitio de incrustación sepa la altura de una página web de terceros cuando se incrusta en la página parece inofensivo, esto puede filtrar información al sitio de incrustación que el usuario del navegador desea mantener en privado. Por ejemplo, http://www.facebook.com/ se procesa de manera diferente dependiendo de si está o no conectado adentro, así que si mi sitio web puede alcanzar la altura de <iframe src="http://www.facebook.com/">, entonces puedo determinar si eres o no un usuario de Facebook, algo que probablemente no quieras que sepa.

La filtración de información sería similar a la infame Fuga de historial CSS que los proveedores de navegadores tuvieron que conectar.

Otros consejos

  

¿Es posible cambiar el tamaño de un iframe para que se ajuste al contenido cuando el atributo iframe src es para una página fuera del dominio de la página que contiene el marco?

Es posible evitar la limitación entre sitios y tener un iframe configurado a la altura de su contenido, pero puede ser un poco incómodo hacer que funcione.

La solución implica trabajar en torno al modelo de seguridad haciendo que el contenido del iframed en sí mismo forme una página en el mismo servidor que la página principal, con el que puede comunicarse. He respondido una pregunta similar a esto antes aquí , que entra en un poco de detalle sobre los entresijos de configurarlo todo.

La advertencia sobre el enfoque descrito es que debe tener medios para obtener su contenido iframed para sí mismo en una página en el servidor principal. Esto generalmente se puede lograr cuando el contenido del iframed está allí como parte de una asociación acordada entre sitios, pero YMMV.

Parece que está intentando evitar una función de seguridad que se implementó por una buena razón ...

¿El cambio de tamaño tiene que ser a través del script? Podría redirigir a una página donde el tamaño del iframe se toma de una cadena de consulta, una base de datos, un archivo de configuración, etc.

¿qué pasa con el uso del 100% en CSS? las barras de desplazamiento se pueden deshabilitar en iframe, pero el usuario no podrá desplazarse.

esa es la prevención JS / XSS, así que supéralo e intenta extraer el contenido del lado del servidor y servirlo a través de una conexión local.

Esto es teórico ya que no lo he probado:

  
    

1) PHP guarda la página remota en un     archivo html local usando     file_get_content() o usando CURL. 2) Javascript carga el archivo local en     iframe     - ahora es local y no se aplican problemas de seguridad.

  

Si hay vars de JavaScript o vars de sesión (que no se pueden extraer del contenido remoto), al menos puede usar esta técnica para consultar la altura del documento de su archivo local, configure el iframe en consecuencia y luego cargue la URL remota en el tamaño modificado iframe.

Cavat: no tiene forma de conocer las URL para los cambios de página dentro de la página remota, por lo tanto, solo puede usar esta técnica en la primera página. Si las páginas remotas tienen la misma altura, no hay problema.

no son las mejores soluciones pero puedes probar:

javascript para escribir iframe, en la aplicación iframe establezca la altura actual en la url # h700 para 700px, etc; luego use un bucle para escuchar ese cambio en el sitio host " en el javascript " para leer el src = " url # h700 " y establezca la altura del iframe por eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top