- 主题:我遇到了一个神奇的 IE Bug...
没看太明白,停顿跟用setTimeout是怎么个关系,还有这个update是怎么做的,拼html还是dom操作,click鼠标是在任意位置,还是在渲染出来的div上?
【 在 nullgate (空门·恨只恨我们家鬼害家神) 的大作中提到: 】
: 我写的一个复杂的页面渲染引擎,在构造出大量 div 之后,只要 click 鼠标之后,系统就会停顿很久(我用的 setTimeout),间隔会超过 500ms。但是我用 IE dev tool 的 profiler 分析了几十秒,我得脚本总耗时不超过 128ms(唯一入口是这个 update...)
: 完全不可理喻啊,难道是由于 click 事件在这些 div 之间 bubbling ?怎么都像 IE8 的 bug 啊。
: 我完全没有捕捉任何鼠标事件 -_-b
: _SM_cn_monadic_phantom_sample_Test_update 114 128.00 4.00
: _SM_cn_monadic_phantom_render_Visualization_evolve 114 124.00 116.00
: _SM_cn_monadic_phantom_master_AxisScenario_update 114 124.00 .00
--
FROM 114.243.191.*
【 在 nullgate (空门·恨只恨我们家鬼害家神) 的大作中提到: 】
: 典型的代码
: function foo()
: {
: update();
: setTimeout("foo()", 50);
如果没有这句,click就不会引发延迟么?话说回来50ms的间隔对于update()是不是短了点,如果里面有大量计算的话,调大点试试呢。至于click事件,应该是会从叶子走到根,再从根走回叶子的,dom太复杂开销会大些,不过也不应该这么严重。
: }
: update() 里面有很复杂的逻辑,但是在我这个例子里面,其实什么也没干(没有改变任何 dom)
: click 是在那堆 div 上面(很复杂的 dom 结构,一大堆 div + img absolute 布局)
: 另外,点的即便不在那堆 div 上面也会烂掉。 orz
: 如果连续点击甚至可以出 3000ms 这种延迟
--
FROM 202.106.68.*
orz...
【 在 nullgate (空门·恨只恨我们家鬼害家神) 的大作中提到: 】
: 囧死... 我被逼到使用 ProcessExplorer 看 IE 的 stack,赫然发现 FlashGet BHO,这玩意儿太流氓了,大概是拦截了 click 事件,然后无耻地做 dom walk,但是写得太垃圾,连 hidden element 都要 walk,艹
: 这才是真正的流氓软件啊
--
FROM 202.106.68.*