我有一个相当复杂的页面,其中包含一个绝对定位的表(作为正文中的最后一个元素)。该表是使用jQuery动态创建的。无论我如何指定cellspadding属性,IE8在兼容模式下都会忽略它。有几个迹象表明它被忽略的原因:
布局完全取消默认填充(2px)。
在IE Developer Tools停靠栏中,属性显示为“cellpadding”(全部小写),而cellspacing属性显示为“cellSpacing”,如果我将“属性”选项卡下的值更改为0,则布局得到修复,名称更改为“cellPadding”。
正如我所说,这是一个相当复杂的页面(读作“杂乱”),充满了来自多个来源的广告和内容。我打算做更多的调查,但我想知道是否有人之前遇到过同样的问题。它必须是一些边缘情况可能导致无效的标记导致这种误解。
答案 0 :(得分:1)
首先,也许你应该检查IE 7.0上的相同页面,以便找出“错误”是由于IE 7.0如何处理它,或者它是否是IE 8.0兼容模式中的错误。 / p>
根据结果,您可以执行以下操作:
IE 7.0中的相同错误:找到一种方法来处理它。
仅在IE 8.0兼容模式下出错:报告错误/找到处理它的方法,不用让修复影响IE 7.0用户。
仅在IE 8.0兼容模式下出错:什么都不做,没有人在兼容模式下使用IE 8.0。
答案 1 :(得分:0)
事实证明问题是由jQuery中的错误引起的(或者至少它看起来像一个错误,除非有其他原因我没看到)。我在jQuery bug跟踪器中提交了它:#4978。长话短说,jQuery以特殊方式处理cellspacing
并在设置其值之前将其转换为cellSpacing
。 不对cellpadding
做同样的事情。这会导致IE7出现问题,因为setAtribute()函数默认区分大小写(在IE7中)。