“Body Onload”发送“ScrollHeight”在Chrome和Safari中无法正常工作

时间:2010-10-30 14:13:09

标签: php javascript html css browser

我刚刚在这里问了一个问题,关于为什么iframe_resize函数无效。

排除故障后,我发现问题不在于功能,所以我发布了一个新问题。

我有一个带有此调整大小功能的index.html:

function resize_iframe(new_height){
    document.getElementById('iframe001').style.height=parseInt(new_height) + 20 + 'px';
}

然后我在index.html中有一个表单,目标设置为iframe,操作设置为query.php:

   <form action='query.php' target='iframe001'>

在我的query.php中:

 //ALOT OF PHP HERE
 <body onload="parent.resize_iframe(document.body.scrollHeight)">
 <?php echo $results_table; ?>
 </body>

问题是,在Chrome和Safari中,scrollHeight根本没有改变。

在所有其他浏览器中,scrollHeight更改并且该功能正常工作。

但是,在Chrome / Safari中,点击页面上任意位置的链接,然后点击浏览器后退按钮返回搜索结果(iframe内容),即使在Chrome / Safari中,iframe也会正确调整大小......?

这对我来说是非常奇怪的行为。

有人可以解释一下吗?

由于

PS:我认为这个人有同样的问题:iframe resizing with scrollheight in chrome/safari

2 个答案:

答案 0 :(得分:2)

您是否尝试过offsetHeight属性?

答案 1 :(得分:0)

似乎Webkit浏览器通常存在一个错误。 https://bugs.chromium.org/p/chromium/issues/detail?id=34224&can=2&start=0&num=100&q=&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified&groupby=&sort=

WORKAROUND(!):我在iframe中将边距应用于这样的包装元素:

<div class="wrapper" style="margin-top: 30px"><!-- ... content --></div>

将其更改为:

<div class="wrapper" style="padding-top: 30px"><!-- ... content --></div>

然后scrollHeight是正确的:)

相关问题