如何最準確地強制瀏覽器重新計算樣式,無論是在整個身體上還是在單個元素上?在IE8中強制重新計算樣式 -
我不能簡單地通過替換innerHTML
或其他東西來重新加載整個DOM,因爲這會丟失所有附加的事件處理程序,所以我需要使用一些只會強制瀏覽器重新計算樣式的東西。這確實需要與IE8一起使用。
我試過尋找任何可以解決這個問題的東西,但至少有一個術語「重新計算樣式」,我沒有得到任何地方,唯一相關的結果,我可以找到「重新加載樣式」是「How to refresh the style of a page after css switch」。但是這個問題對我來說並不適用,因爲我不是直接改變需要改變樣式的元素的類,而是它的兄弟。
Here is a simplified demo,只有相關的代碼:
HTML:
<span id="foo">This gets a class,</span>
<div>...and this should become red,</div>
<button onclick="document.getElementById('foo').className = 'foo';">...if you click here</button>
CSS:
span.foo + div {color:red;}
如果測試演示,至少在IE8仿真模式,IE11,你會發現風格不會更新。對我而言,它只會在我在F12界面的DOM查看器中選擇節點後纔會更新。 (PS:IE8仿真模式位於IE11 F12界面的底部)。
請不要使用內嵌JavaScript。它導致可讀性差,通常是不好的做法。 –
如果您需要支持IE 8,則應該在IE 8中進行測試,而不是在模擬器中進行測試,這可能會導致實際瀏覽器中可能不存在的問題。 – Pavlo
@RJJordan就像我說的,我做了一個簡化版本。這只是一個非常快速的演示。 – Joeytje50