IE7标准文档模式下的SPAN / DIV高度不正确

时间:2012-01-26 12:03:33

标签: javascript jquery internet-explorer html devexpress

我在IE7文档模式下计算跨度高度时遇到问题。确切地说,嵌入在span中的div根据IE版本返回不同的高度。

代码(jquery 1.4.2,也在较新版本上测试过):
$('#sys_MainPage').height()

返回cca。 260,Chrome,Firefox和IE 8/9。当我激活IE7文件模式代码返回863? 这是具有相关属性的文档结构 IE7:

----SPAN:sys_MainPage
    height=863
    innerHeight=863
    outerHeight=863
    cssHeight=auto
    position=static
    overflow=visible
--------DIV:UgovoriCopy
        height=853
        innerHeight=863
        outerHeight=863
        cssHeight=99%
        position=static
        overflow=auto
------------DIV:GridViewUgovorGridWrapper
            height=862
            innerHeight=862
            outerHeight=862
            cssHeight=100%
            position=absolute
            overflow=visible
----------------TABLE:GridViewUgovorGrid
                height=142
                innerHeight=142
                outerHeight=144
                cssHeight=auto
                position=static
                overflow=visible
----------------SCRIPT:dxss_1127065360
                height=0
                innerHeight=0
                outerHeight=0
                cssHeight=auto
                position=static
                overflow=visible 

IE9:

----SPAN:sys_MainPage
    height=10
    innerHeight=10
    outerHeight=10
    cssHeight=auto
    position=static
    overflow=visible
--------DIV:UgovoriCopy
        height=0
        innerHeight=10
        outerHeight=10
        cssHeight=99%
        position=static
        overflow=auto
------------DIV:GridViewUgovorGridWrapper
            height=866
            innerHeight=866
            outerHeight=866
            cssHeight=100%
            position=absolute
            overflow=visible
----------------TABLE:GridViewUgovorGrid
                height=765
                innerHeight=765
                outerHeight=765
                cssHeight=765.44px
                position=static
                overflow=visible
----------------SCRIPT:dxss_1127065360
                height=381
                innerHeight=381
                outerHeight=381
                cssHeight=auto
                position=static
                overflow=visible 

修改
我通过删除UgovoriCopy css高度(99%)解决了这个问题。但我仍然想知道为什么IE7文档模式中存在问题。

2 个答案:

答案 0 :(得分:4)

首先将块级元素(div)放在内联元素(span)中是无效的。 其次,IE7和其他浏览器(如FF,chrome和safari)上的浏览器具有更好的渲染引擎,并且可以直观地处理错误标记。

至于高度的css属性:99%,我认为在IE7中,因为它使标记无效并且不知道如何正确处理它,它将div扩展了99%并且当span标记包含div时它的行为也一样。 在其他浏览器如FF,chrome中,即使标记无效,它们也会直观地处理它,即使div有99%并且是块元素,但其父(span)是内联元素,它占据基于金额的高度内容(行为正确)并返回适当的高度

答案 1 :(得分:1)

我认为这是一个问题,即你不能在一个范围内有一个div。最好的方法是在div中有一个span。尝试更改此标记,您的问题可能会更容易。你还检查你的填充/边距,因为规则就是计算元素高度中填充的规则在chrome上是不一样的。

告诉我,如果我的建议改变了你的问题。