VKen
VKen

Reputation: 5004

How to get the height of an iframe with javascript from inside the iframe? What about pages with multiple iframes?

Is there a way to detect the height and width of an iframe, by executing a script from inside the iframe? I need to dynamically position some elements in the iframe according to the different height/width of the iframe.

Would there be any difference if there are multiple iframes in the same page? i.e. each iframe wants to find its own dimensions.

Javascript or jquery solutions welcomed.

Thanks!

<iframe src='http://example.com' width='640' height='480' scrolling='no' frameborder='0' longdesc='http://example.com'></iframe>

The iframes have to be embeded on other sites, and as mentioned by one of the answers below, I've hit permission problems.

Upvotes: 23

Views: 89002

Answers (5)

Anri&#235;tte Myburgh
Anri&#235;tte Myburgh

Reputation: 13527

Each <iframe> would need an id I suppose. And then inside the <iframe> you would reference it like this:

var thisIframesHeight = window.parent.$("iframe#itsID").height();

Upvotes: 3

ddlab
ddlab

Reputation: 930

may be a bit late, as all the other answers are older :-) but... here´s my solution. Tested in actual FF, Chrome and Safari 5.0.

css:

iframe {border:0; overflow:hidden;}

javascript:

$(document).ready(function(){
    $("iframe").load( function () {
        var c = (this.contentWindow || this.contentDocument);
        if (c.document) d = c.document;
        $(this).css({
            height: $(d).outerHeight(),
            width: $(d).outerWidth()
        });
    });
});

Hope this will help anybody.

Upvotes: 5

Paul D. Waite
Paul D. Waite

Reputation: 98936

If your iframe’s page and its parent page are served from different domains (meaning you can’t access the parent page’s DOM properties from the iframe page), then I think it’s the same as when you’re trying to work out the viewport height.

For that, see:

Or possibly this:

Upvotes: 9

Valentin Kantor
Valentin Kantor

Reputation: 1844

yes, you can execute parent's window function from inside the frame, and pass parameters, like this:

window.parent.FUNC_NAME(iframe_height,iframe_width)

just remember to define function FUNC_NAME in the parent window

Upvotes: 0

Julian Jelfs
Julian Jelfs

Reputation: 473

Be aware that code like this:

var thisIframesHeight = window.parent.$("iframe.itsID").height();

will only be safe if the source of the iframe and parent window are from the same domain. If not you will get permission denied problems and you will have to take another approach.

Upvotes: 5

Related Questions