1
<iframe id="frame1" name="frame1" width="200" height="600" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://localhost/Widget/"></iframe>

http://localhost/Widget/我想使用 JavaScript从页面中找到这个 iframe 的高度。

有什么办法吗?提前致谢。

4

4 回答 4

2

我在自己的解决方案中对这个问题采取了不同的方式:在 iframe 中,我有:

<body onload="parent.setsize(document.body.scrollHeight);">

在父级中,我有一个 js 函数:

function setsize(pixels){ 
if(navigator.appName=="Microsoft Internet Explorer") pixels+=40;
if (navigator.userAgent.indexOf("Firefox")!=-1) pixels+=40;
document.getElementById('produktet').style.height=pixels+"px";

如您所见,iframe 内容的总高度为:document.body.scrollHeight

于 2012-12-18T11:41:57.180 回答
1

你必须先让“父母”这样做。您可以通过 获取父级document.parent,因此以下应该有效(未经测试):

parent.getElementById( 'frame1' ).getAttribute( 'height' );

如果您在父级中加载了 jQuery,则可以使用它:

parent.jQuery('#frame1').attr('height');

编辑:但是请注意,这里有一个安全限制:两个页面必须在同一个域上才能工作。

于 2012-12-18T11:02:47.917 回答
1

绕过跨源问题。您可以在身体加载之前读取高度:

<html>
  <head>
    <script>
        var iframeSize = Math.max( document.documentElement.clientHeight,
                                   document.documentElement.scrollHeight,
                                   document.documentElement.offsetHeight );
    </script> 
  </head>
<body>
  ...
于 2014-11-27T17:18:15.110 回答
0
$('#frame1').attr('height');

使用 jQuery。或者

document.getElementbyId('frame1').getAttribute('height');

用纯js。

于 2012-12-18T11:00:12.527 回答