marcnyc marcnyc - 3 months ago 20
HTML Question

Resizing an iframe height when the contents of the iframe change (same domain)

I've been researching this for a few days and I'm stuck... I read this page:

Resizing an iframe based on content

and this page:

Auto resize iframe height when the height of the iframe contents change (same domain)

It seems it's relatively easy to resize an iframe when the maine index.html that contains the iframes first loads, but once the iframe changes content I can't figure out how to re-size the iframe.

my index.html:

<body>
<iframe seamless frameborder="0" name="top" id="top" src="venues.php" width="100%" height="100" /></iframe>
<iframe seamless frameborder="0" name="main" id="main" src="admin.php" width="100%" height="2000" /></iframe>




When venues.php loads it's 100px (which is fine) but when somebody clisk in a (internal, same domain) link inside the venues.php page I need to resize the "top" frame height to fit the new contents.

I've tried a bunch of solutions I can always only get it resized on the first load but not when somebody clicks inside it.

Thanks

Answer

You could use the mutation observer event and the postMessage API, It's very difficult to create and implement script that can negotiate the dimension measurements of an iframe that frequently changes. I gave up on writing something from scratch and used this small plugin:

https://github.com/davidjbradshaw/iframe-resizer

This Plunker demonstrates the use of this plugin when detecting the mutation observer event fire when resizing of the iframe happens.

PLUNKER