2009-03-31 7 views
7

Possible en double:
Resizing an iframe based on contentiframe Redimensionner pour adapter son contenu

J'ai un iframe où le src est un fichier HTML et ce iframe est mis à l'intérieur usercontrol:

<iframe frameborder="0" src="CName.htm" align="left" width="730" height="1100" ></iframe> 

J'ai besoin de l'iframe pour redimensionner en fonction du contenu afin que sa hauteur soit définie en fonction du h ieght du fichier HTML et je n'ai pas besoin d'utiliser l'attribut de défilement. Avez-vous une idée?

+0

Voir http://stackoverflow.com/questions/153152/resizing-an-iframe-based-on-content –

+1

Cette réponse liée est désespérément obsolète, voir https://github.com/davidjbradshaw/iframe- Resizer pour une solution beaucoup plus simple. – user2684310

Répondre

0

Vous pouvez déterminer la hauteur et la largeur du contenu à l'intérieur du cadre, puis appeler une fonction située sur le propriétaire du cadre pour définir la hauteur et la largeur de l'élément iframe.

+3

Cela ne fonctionnera que si l'iframe et son parent ne violent pas la politique de même origine. – nickh

0

Il y a un moyen! C'est en jquery et c'est trop simple. Kinda hacky ..

$('iframe').contents().find('body').css({"min-height": "100", "overflow" : "hidden"}); 
setInterval("$('iframe').height($('iframe').contents().find('body').height() + 20)", 1); 

Et voilà!

À la votre! :)

+0

À quoi sert le '+ 20'? –

19

Je l'ai utilisé le code jQuery suivant pour ce faire:

$('#iframe_id').load(function() { 
    $(this).height($(this).contents().height()); 
    $(this).width($(this).contents().width()); 
}); 

Je ne pense pas que cela fonctionnera si le contenu iFrame sont inter-domaines, cependant.

+0

Pour faire un domaine croisé, vous devez utiliser l'API postMessage pour cela, vous devez également vérifier les événements de redimensionnement de fenêtre et les mutations DOM, de sorte que l'iFrame conserve la taille du contenu. Découvrez cette lib qui s'occupe de toutes ces choses pour vous. https://github.com/davidjbradshaw/iframe-resizer –