我試圖使用屬性選擇器和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