gpt4 book ai didi

javascript - iframe.document.body.scrollHeight 是正确值的两倍

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:56 24 4
gpt4 key购买 nike

<iframe name="asdf" id="asdf" onload="change_height(this)" src="asdf.jsp" width="250" scrolling="no" frameborder="0"></iframe>

        function change_height(iframe) {
if (document.all) {
// IE.
ieheight = iframe.document.body.scrollHeight;
iframe.style.height = ieheight;
} else {
// Firefox.
ffheight= iframe.contentDocument.body.offsetHeight;
iframe.style.height = ffheight+ 'px';

}
}

IE7运行时ieheight是实际高度的两倍;没有在IE6上测试过。如果我使用 scrollHeightoffsetHeight,它的值相同。

这是 Firefox 中的正确高度。

在我通过将 IE 值除以/2 来修补之前,正确的方法是什么?

最佳答案

document.body 表示 IE 在 Quirks Mode 下运行时的视口(viewport)。如果您的 iframe 中的文档在 Quirks 中,则 bodyscrollHeight 将等于其视口(viewport)的高度,即。 iframe 的默认高度。

如果您真的需要在 Quirks 模式下获取文档高度,则必须添加一个额外的包装器 div 来测量。一个更好的解决方法是确保所有文档都使用标准模式文档类型。在这十年里,你不应该使用 Quirks Mode 创作任何东西。

此外,你不应该使用 document.all 进行 IE 嗅探(这对于其他支持它的浏览器可能会出错),你不应该使用 iframe.document(它是非标准的,甚至没有被 MSDN 记录),你应该总是添加 'px' 单位(IE 可以很好地处理它,你在标准模式下需要它)。

function change_height(iframe) {
var doc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
iframe.style.height= doc.body.offsetHeight+'px';
}

关于javascript - iframe.document.body.scrollHeight 是正确值的两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com