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

Javascript iframe.document.body.scrollHeight是正确值的两倍,javascript,iframe,cross-browser,Javascript,Iframe,Cross Browser,ieheight是在IE7中运行时实际高度的两倍;没有在IE6上测试过。如果使用scrollHeight或offsetHeight,则值相同 这是Firefox中的正确高度 在我将IE值除以/2进行修补之前,正确的方法是什么?document.body表示IE在怪癖模式下运行时的视口。如果iframe中的文档有问题,则正文的滚动高度将等于其视口的高度,即iframe的默认高度 如果您真的需要在Quirks模式下获取文档高度,则必须添加一个额外的包装器div来测量。更好的修复方法是确保所有文档都使

ieheight是在IE7中运行时实际高度的两倍;没有在IE6上测试过。如果使用scrollHeight或offsetHeight,则值相同

这是Firefox中的正确高度


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

document.body
表示IE在怪癖模式下运行时的视口。如果iframe中的文档有问题,则
正文
滚动高度
将等于其视口的高度,即iframe的默认高度

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

另外,你不应该使用
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.scrollHeight+'px';
}
我还修改了jquery使用的代码

(function($) {
    $.fn.ZIAutoHeight = function() {
        var t = this, doc = 'contentDocument' in t[0]? t[0].contentDocument : t[0].contentWindow.document;
        t.css('height', doc.body.scrollHeight+'px');
    }
})(jQuery);

用法
$('iframe').ZIAutoHeight()希望这对IE7有所帮助

,这只是给了我预先存在的窗口高度,而不是其内容的大小。帮助?:-)正如我所说,这就是怪癖模式下会发生的事情。在标准模式下,
body
实际上是
元素中内容的高度。不要使用怪癖模式。这不好。我不能完全控制iframe中的内容,它是另一个组中的某个人,我必须让他们帮助我。别提了,谢谢你!如果到目前为止有人遵循了这一点,下面的链接有助于澄清哪些DOCTYPE头触发怪癖模式,哪些不触发怪癖模式:@Nelson:它是什么:IE中的每个元素节点上都有一个属性
文档
。它是
节点
上标准DOM
所有者文档
属性的未记录同义词。因此
iframe.document===document
——父文档,而不是子iframe文档。因此,您得到的是父窗口的高度,而不是子iframe(假设您实际得到了
iframe.document.documentElement.scrollHeight
;没有
document.scrollHeight
属性)。
function change_height(iframe) {
    var doc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
    iframe.style.height= doc.body.scrollHeight+'px';
}
(function($) {
    $.fn.ZIAutoHeight = function() {
        var t = this, doc = 'contentDocument' in t[0]? t[0].contentDocument : t[0].contentWindow.document;
        t.css('height', doc.body.scrollHeight+'px');
    }
})(jQuery);