如何在IE7中DHTML更改后强制再流?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我有一个页面,用户可以动态添加文件上传框。添加框会改变它们所在的div的高度,但它下面div的某些元素会保留在相同的位置,所以它们开始与新的DOM元素重叠。

这在IE8,Firefox,Chrome中正常工作。我该如何强制IE7使用新的DHTML重新翻页?

我制定的最佳解决方案是这样的:

window.resizeBy(1, 0); 
setTimeout(UndoResize, 0);

但它不适用于最大化的窗口(它会恢复窗口)。

提问于
用户回答回答于

尝试:

element.className = element.className;

由于className已经分配了一个值,所以IE影响该元素的CSS会发生变化,IE会重新刷新并重新绘制页面的这一部分。幸运的是,它并没有被优化以检查className值是否实际上从其先前的值改变,因此以上将触发回流而不会破坏其他任何东西。

我确实发现有一次这个固定的IE6,但打破了IE7,但尝试一下,看看它是否适合你。

用户回答回答于

try {
    var s1 = domElt.parentNode.style, s2 = domElt.style;
    var dummyCss = "foo:foo;"; // do not add leading ';' here!
    s1.cssText += "";
    s1.zoom = 1;
    s2.cssText += dummyCss;
    s2.cssText = s2.cssText.replace(dummyCss, "");
} catch (ex) {}

扫码关注云+社区