« PDF编辑工具 | 主 页 | Google日历支持短信提醒 »

一个会造成Firefox占用CPU的Javascript程序错误


cathayan.org版权所有,保留一切权利。转载请保留此说明。谢绝商业转载。

网友贴出一个网站,用Firefox访问会僵死,CPU占用100%,虽然不至于上系统挂掉,但Firefox自己会没有反应。我试了下,确实如此。看了它的页面,发现最后有一段Javascript,里面有个setInterval(),Google了一下,发现Mozilla那里近期刚解决了一个相关Bug,于是以为是真的Bug。再于是就下载了号称解决问题的20070531的Firefox 3.0alpha,来试这个网页和单独那段JS,发现没有效果。这才发现这个Bug其实说的是别的问题。

再看这段JS代码,发现那个setInterval写在函数体内可能有问题,把它拿出来,再试,果然好了,随意滚动,都不再有占用CPU的问题。这个网站在IE7上看,也一样要占用40%左右的CPU(可能机器比较破),但没有僵住。代码看下面,这里是把setInterval拿出来的样子。网上我放了两个HTML,一个是好的,一个是坏的,有兴趣可以试一下。坏的那个应该是有效果的吧,只能杀死,风险自负。



 1

 2 <SCRIPT>

 3     set_y = 0;

 4     distance = 0;

 5     document.all['move_banner'].style.left = 900;

 6 //    move_div();

 7     setInterval('move_div()');

 8     function move_div()

 9     {

10             var new_y;

11             new_y = document.body.scrollTop;

12             distance = new_y - set_y ;

13             if( set_y != new_y ) set_y += ( distance / 10 );

14             document.all['move_banner'].style.top = set_y+250;

15 //    setInterval('move_div()');

16     }

17 </SCRIPT>





2007-06-09 00:01:00,由cathayan发表。目录:电脑  EMail This

评论

防暴流氓:

果真……
那个。。。
cpu立刻满了……
哎……
真有人写出这么烂的js。。。
我在sina看下视频 不允许js就不出来播放器
允许了 就奔100去了。。。
哎……太次了。
firefox控制台里面还提示xss脚本攻击呢。。
一大堆错误和警告……
于 2007-06-26 12:56:23 发表,来自:http://liumang.yo2.cn

我来评论








为保护您的隐私,请不要在评论框里填写自己的真实E-mail地址。
广告见之即删。带有任何赢利机构链接的评论都会删除。