我试图使用属性选择器和CSS来格式化元素。属性选择器,JavaScript和IE8
的HTML看起来像:
<div id="user" highlight="false">User Name</div>
的CSS是:
[highlight=true]
{
background-color: red;
}
[highlight=false]
{
background-color: white;
}
然后还有一些附带的JavaScript:
if(foo)
{
node.setAttribute('highlight', true);
}
else
{
node.setAttribute('highlight', false);
}
这在Firefox和Chrome。当突出显示属性被JavaScript更改时,元素的背景颜色会根据需要进行更改。然而,在IE8中,这是一个不同的故事。元素将根据最初在HTML中分配的高亮值正确显示,但当属性动态更改时,元素的显示不会更改。
这是一个已知的怪癖,是否有一个已知的解决方法?
更新 我刚刚将属性名称更改为“frob”,其值为“on”和“off”。这应该解决有关保留或可解释的值的任何问题。
另一件值得注意的事情。当我打开IE8开发人员工具并使用HTML检查器时,它会显示样式[frob = on]或[frob = off],适用于启动文档检查器时所使用的任何值。但是,frob属性将不再在检查器视图中更改。在任何情况下,[frob = on/off] css中的值都不会在初始呈现HTML后应用。
更新:问题解决 解决方案是强制重绘。有很多种方法可以做到这一点,但似乎标准的做法是将className重新分配给自己。
更改JavaScript才能使用字符串形式并没有办法。谢谢,不过。 – 2010-01-21 20:57:21
好的。你还能尝试一些不同于真或假的东西,只是为了确保没有任何解析起作用?它是否与'rel'这样的已知有效属性一起工作? – 2010-01-21 21:00:24