realazy


解决IE在JS下不渲染的bug

有时候,你会发现,在一些JS应用中,涉及到CSS的重新渲染(即页面样式需要更新)的话,IE死活不变。

此时你需要让IE重新渲染一下:

function handleIEhasLayout(){
	//trigger re-rendering
	document.body.style.zoom = 1.1;
	//restore it
	document.body.style.zoom = '';
}

有问题,记得执行一下handleIEhasLayout,万事OK。

bug重现以及延伸阅读:http://old9.blogsome.com/2006/07/26/ie6-reflow-bug/

11 Responses to “解决IE在JS下不渲染的bug”

  1. lushnis Says:

    看起来不错,btw,对IE来说,zoom这个属性倒是大有用处,在触发元素的layout时也能用到。

  2. Matt Says:

    似乎标题应该是:解决JS在IE下不渲染的bug

  3. awflasher Says:

    同意Matt……
    此外,我为什么没有遇到这个问题……
    能总结一下具体触发原因么?

  4. » 昨日收集 - 贯穿整个产品生命周期的用户研究 | 94smart’s Blog Says:

    [...] 解决IE在JS下不渲染的bug [...]

  5. old9 Says:

    我是用1和100%之间切换的,呵呵。
    http://old9.blogsome.com/2006/07/26/ie6-reflow-bug/
    @aw,可以看下上面这例子

  6. Arrix Says:

    死活不变时,我一般把触发变化的代码放到setTimeout中。你这个办法不错!“死活不变”,哈哈!

  7. 小甲 Says:

    原来刘丹同学在“校内”也遇到了这个问题,捣了一个晚上,ZOOM了一下就好了:)

  8. 骨头 Says:

    OMG,原来是这样。。。

  9. 郭文 Says:

    相对定位的层在改变窗口大小时也会有样式不渲染的问题.

  10. shiweiwei97 Says:

    使用style.zoom在某些情况下还会出现不能全部渲染的问题,比如页面内容很少,没有占满屏幕。
    我的方法是:
    document.body.style.display = “none”;
    document.body.style.display = “”;

    不知道这种方法有没有缺陷,至少它解决了我的问题。

  11. 安利 Says:

    问题啊问题!嗬嗬受教了,解决了我一直的困惑。感谢版主

Leave a Reply


realazy (懒到死) is proudly powered by WordPress | Entries (RSS) and Comments (RSS)