我正在尝试使用属性选择器和 CSS 来格式化元素。
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 中最初分配的突出显示值正确显示,但当动态更改属性时,元素的显示不会改变。
这是一个已知的怪癖吗?是否有已知的解决方法?
Update我刚刚将属性名称更改为“frob”,值为“on”和“off”。这应该可以解决有关保留值或可解释值的任何问题。
另一件值得注意的事情。当我打开 IE8 开发人员工具并使用 HTML 检查器时,它将显示样式 [frob=on] 或 [frob=off],与我启动文档检查器时应用于 frob 的任何值一样。但是,frob 属性在检查器视图中将不再更改。在任何情况下,[frob=on/off] css 中的值都不会在 HTML 初始渲染后应用。
更新:问题已解决解决方案是强制重绘。有多种方法可以做到这一点,但标准的方法似乎是将 className 重新分配给自身。
您正在使用未知属性hightlight
。它是 IE,因此它根据其名称支持属性(这似乎比支持每个属性名称更难,但是......它是 IE)。
只需使用class="hightlight"
- 更容易实施和处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)