如何最准确地强制浏览器重新计算样式,无论是在整个身体上还是在单个元素上?在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