2008-08-29 8 views

Répondre

10

Cela devrait régler la hauteur IFRAME à la hauteur de son contenu:

<script type="text/javascript"> 
the_height = document.getElementById('the_iframe').contentWindow.document.body.scrollHeight; 
document.getElementById('the_iframe').height = the_height; 
</script> 

Vous voudrez peut-être ajouter à votre scrolling="no"IFRAME pour désactiver les barres de défilement.

modifier: Oops, a oublié de déclarer the_height.

+4

Très pratique, bravo. Peut-être vaut-il la peine de mentionner que cela ne fonctionnera pas si le iframe est sur un domaine différent en raison de la même politique d'origine – ConroyP

0

Cet extrait CSS devrait supprimer la barre de défilement vertical:

body { 
    overflow-x: hidden; 
    overflow-y: hidden; 
} 

Je ne suis pas encore sûr d'avoir-il autant d'espace vertical car il a besoin, mais je vais voir si je ne peux pas IT out.

0

Ajout d'une déclaration DOCTYPE au document source IFRAME aidera à calculer la valeur correcte de la ligne

document.getElementById('the_iframe').contentWindow.document.body.scrollHeight 

voir W3C DOCTYPE for examples

J'avais des problèmes avec IE et FF comme il a été le rendu de la iframe document en mode «bizarreries», jusqu'à ce que j'ajoute le DOCTYPE.

Prise en charge de FF/IE/Chrome: le .scrollHeight ne fonctionne pas avec Chrome. J'ai donc créé un exemple javascript utilisant jQuery pour définir toutes les hauteurs IFRAME sur une page basée sur le contenu iframes. NOTE: Ceci est pour les pages de référence dans votre domaine actuel.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('iframe').each(function(){ 
      var context = $(this); 
      context.load(function(event){ // attach the onload event to the iframe 
       var body = $(this.contentWindow.document).find('body'); 
       if (body.length > 0 && $(body).find('*').length > 0) { // check if iframe has contents 
        context.height($(body.get(0)).height() + 20); 
       } else { 
        context.hide(); // hide iframes with no contents 
       } 
      }); 
     }); 
    }); 
</script> 
0

La solution est de ne pas utiliser et code prétraiter sur côté serveur.

+2

Ce n'est pas toujours possible, sauf si vous construisez un serveur proxy personnalisé qui réécrit les liens dans le corps html ... qui est une blague. – ErikE