如何从iframe中使用javascript获取iframe的高度?那些包含多个iframe的网页呢?

时间:2011-02-23 05:14:32

标签: javascript jquery html dom iframe

有没有办法通过从iframe内部执行脚本来检测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>

iframe必须嵌入到其他网站上,正如下面的答案之一所述,我遇到了权限问题。

5 个答案:

答案 0 :(得分:6)

如果您的iframe的页面及其父页面是从不同的域提供的(意味着您无法从iframe页面访问父页面的DOM属性),那么我认为它与您尝试解决的时间相同视口高度。

为此,请参阅:

或者可能这样:

答案 1 :(得分:5)

请注意这样的代码:

var thisIframesHeight = window.parent.$("iframe.itsID").height();
只有iframe和父窗口的源来自同一个域时,

才会安全。如果不是,您将获得许可被拒绝的问题,您将不得不采取另一种方法。

答案 2 :(得分:3)

我认为每个<iframe>都需要一个id。然后在<iframe>内你会像这样引用它:

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

答案 3 :(得分:3)

可能有点晚了,因为所有其他答案都比较旧:-)但是......这是我的解决方案。在实际的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()
        });
    });
});

希望这对任何人都有帮助。

答案 4 :(得分:0)

是的,您可以从框架内执行父窗口函数,并传递参数,如下所示:

window.parent.FUNC_NAME(iframe_height,iframe_width)

请记住在父窗口中定义函数FUNC_NAME