Как получить высоту iframe с javascript изнутри iframe? Как насчет страниц с несколькими iframe?

Есть ли способ определить высоту и ширину iframe, выполнив script изнутри iframe? Мне нужно динамически позиционировать некоторые элементы в iframe в соответствии с разной высотой/шириной iframe.

Будет ли какая-либо разница, если на одной странице есть несколько iframe? то есть каждый iframe хочет найти свои собственные размеры.

Приветствуются решения Javascript или jquery.

Спасибо!

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

Ифраметры должны быть встроены в другие сайты, и, как упоминалось в одном из приведенных ниже ответов, я столкнулся с проблемами разрешения.

Ответы

Ответ 1

Если ваша страница iframes и ее родительская страница подаются из разных доменов (это означает, что вы не можете получить доступ к родительским страницам свойств DOM с страницы iframe), то я думаю, что это так же, как при попытке выработать высоту видового экрана.

Для этого см.:

Или, возможно, это:

Ответ 2

Имейте в виду, что такой код:

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

будет только безопасным, если источник окна iframe и parent из одного домена. Если нет, вы получите разрешение на устранение проблем, и вам придется использовать другой подход.

Ответ 3

Каждой <iframe> потребуется id, я полагаю. А затем внутри <iframe> вы ссылаетесь на это следующим образом:

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

Ответ 4

может быть немного поздно, так как все остальные ответы старше:-), но... вот мое решение. Протестировано в реальных FF, Chrome и 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()
        });
    });
});

Надеюсь, это поможет любому.

Ответ 5

да, вы можете выполнить функцию родительского окна изнутри фрейма и передать параметры, например:

window.parent.FUNC_NAME(iframe_height,iframe_width)

просто не забудьте определить функцию FUNC_NAME в родительском окне