Internet explorer 8 IE8不接受怪癖模式下的多个类?

Internet explorer 8 IE8不接受怪癖模式下的多个类?,internet-explorer-8,css-selectors,quirks-mode,css,Internet Explorer 8,Css Selectors,Quirks Mode,Css,我遇到的情况是IE8似乎正在删除CSS选择器。我觉得这很难相信,但我不知道发生了什么 在.css文件中,我有以下声明: #srp tr.objectPath.hover td { border-top:none; } 但是,当我通过内置开发人员工具检查IE8中的文件时,声明被修改为: #srp TR.hover TD { border-top:medium none; } 我不关心case中的更改或规则的重述,但是删除“.objectPath”是一个真正的问题,因为它的目标比

我遇到的情况是IE8似乎正在删除CSS选择器。我觉得这很难相信,但我不知道发生了什么

在.css文件中,我有以下声明:

#srp tr.objectPath.hover td {
    border-top:none;
}
但是,当我通过内置开发人员工具检查IE8中的文件时,声明被修改为:

#srp TR.hover TD {
    border-top:medium none;
}
我不关心case中的更改或规则的重述,但是删除“.objectPath”是一个真正的问题,因为它的目标比我想要的更广泛

我注意到这个页面是,并且必须保持在怪癖模式

知道发生了什么吗


谢谢

tr.objectPath.hover
如果试图使用
hover
伪类,则语法不正确。正确的语法应该使用冒号(即
tr.objectPath:hover
)。当机器读取您的代码时,它将
objectPath
读取为
tr
的类名,但当它到达
hover
时,它将删除旧的类名,并将其替换为
hover
类(无论是否存在属于该类的任何元素。而且,如果是这种情况,那么我看不出您通过引用
:hover
实例的子级来尝试做什么

如果您实际上使用了
hover
作为类名(我不建议这样做,因为阅读您的代码的人可能会感到困惑)您希望CSS应用到<代码> TT/<代码>的<代码> > ObjtPrase和<代码> HOVER <代码>类中,您可以考虑只为两个类的元素创建一个新类,而不是使用这两个元素(即SyrSr.Tr.NeNeXeTD )。 编辑:进一步看,这似乎是IE中的另一个问题。我在IETester中进行了测试,它似乎存在于IE的所有版本中。我在你这方面看到的唯一解决方案非常混乱:

首先,它需要在CSS中使用JavaScript,因为您没有访问任何其他内容的权限

其次,它需要在JavaScript中创建一个getElementsByClass函数,该函数可以将多个类名作为参数

最后,您可能希望研究将此代码指定为,以便其他浏览器的用户不必处理所有这些内容带来的任何潜在问题


为了澄清,我不建议这样做。相反,我建议联系有权访问HTML源代码的人(假设您与他们合作)这样,他们就可以对属于这两个类甚至属于它们的
td
子类的
tr
元素应用更简单的修复方法,即添加一个
objectPathhover
类。

看起来您的声明中有一些不正确的语法,但很难准确地说出您在做什么。您是否试图匹配悬停状态还是有一个类实际上被称为“悬停”

如果要进入状态,请尝试:

#srp tr.objectPath:hover td {
    ...
}
如果存在另一个类,则可能需要两个单独的声明:

#srp tr.objectPath td {
    ...
}

#srp tr.hover td {
    ...
}

在怪癖模式下,IE 8呈现页面,并将DOM视为IE 5.5呈现的对象。这就是怪癖模式下IE 8忽略多个类的原因。这在IE 8中不是一个错误,如果您希望正确解析和呈现页面,则必须设置适当的DOCTYPE以在标准模式下呈现页面。

实际上有一个类“hover”使用您描述的两个类对我没有帮助,因为它基本上与IE所做的相同:将样式应用于任何具有classname.hover父级的td,而不是仅应用于具有class.objectPath和.hover父级的td。据我所知,css不是这样工作的。您可以声明单独的类和有重叠,或者可以沿控制树级联(.object在.hover下,反之亦然)但这不是一个只有在两个规则都存在时才适用的规则。在您的情况下,听起来您需要创建第三个类。您的建议会起作用,但需要更改生成标记的代码(我不控制)。问题仍然是,为什么IE要重新声明?我对此做了更多的研究,并得出结论Tim Sheiner:IE很可能会向您展示声明的规范形式(正如它所理解的那样)。顺便说一句,hover伪类不会在怪癖模式下工作(锚除外)