2008-09-12 11 views
8

Tengo una aplicación que me gustaría para incrustar dentro de nuestras sociedades CMS. La única forma de hacerlo (me dicen) es cargarlo en un .<iframe> - ¿Cómo mostrar toda la altura de la página hace referencia?

fácil: basta con establecer height y width-100%! Excepto, no funciona.

Lo que encontrar a cabo acerca de la configuración frameborder a 0, por lo que al menos se ve como parte del sitio, pero preferiría no tener una barra de desplazamiento en el interior fea una página que tiene ya fuiste uno.

¿Conoce algún truco para hacer esto?

EDIT: Creo que necesito aclarar mi pregunta un tanto:

  • la empresa CMS muestra la pelusa y material para toda nuestra página web
  • mayoría de las páginas creadas a través del CMS
  • mi solicitud no lo es, pero me dejarán incrustarlo en un
  • No tengo control sobre el iframe, por lo que cualquier solución debe funcionar desde la página referenciada (según el src atributo de la etiqueta iframe)
  • el CMS muestra un pie de página, por lo que establecer la altura de 1 millón de píxeles no es una buena idea

¿Puedo acceder a las páginas de padres DOM de la página de referencia? Esto podría ayudar, pero puedo ver que algunas personas no quieren que esto sea posible ...

Esta técnica parece funcionar (gleaned de varias fuentes, pero inspirado en el link de la respuesta aceptada:

En documento de nivel superior:

<iframe id="MyIFRAME" name="MyIFRAME" 
    src="http://localhost/child.html" 
    scrolling="auto" width="100%" frameborder="0"> 
    no iframes supported... 
</iframe> 

En niños:

<!-- ... --> 
<body> 
<script type="text/javascript"> 
    function resizeIframe() { 

     var docHeight; 
     if (typeof document.height != 'undefined') { 
      docHeight = document.height; 
     } 
     else if (document.compatMode && document.compatMode != 'BackCompat') { 
      docHeight = document.documentElement.scrollHeight; 
     } 
     else if (document.body 
      && typeof document.body.scrollHeight != 'undefined') { 
      docHeight = document.body.scrollHeight; 
     } 

     // magic number: suppress generation of scrollbars... 
     docHeight += 20; 

     parent.document.getElementById('MyIFRAME').style.height = docHeight + "px";  
    } 
    parent.document.getElementById('MyIFRAME').onload = resizeIframe; 
    parent.window.onresize = resizeIframe; 
</script>    
</body> 

Por cierto: Esto solo funcionará si el padre y el hijo están en el mismo dominio debido a una restricción en JavaScript por razones de seguridad ...

Respuesta

0

que podría estar perdiendo algo, pero la adición de scrolling=no como un atributo de la etiqueta iframe normalmente se deshace de las barras de desplazamiento.

+1

Sí, pero la página incrustada se corta si no cabe en el marco flotante. –

2

A condición de que su marco flotante está alojado en el mismo servidor que la página que contiene, puede access it via javascript.

Hay una serie de métodos sugeridos para setting the iframe to the full height of the contents, cada uno con diferentes grados de éxito - un google para este problema muestra que es bastante común, sin, una talla única para todos los verdaderos solución de consenso que soy ¡asustado!

Varias personas han informado que this script hace el truco, pero puede necesitar some modification para su caso específico (una vez más, suponiendo que su iframe y página principal están en el mismo dominio).

Cuestiones relacionadas