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


06/09/07。  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>





06/09/07 00:01:00,由cathayan发表。目录:电脑

Comments

1条评论

????:

??……
?????
cpu????……
?……
?????????js???
??sina???? ???js???????
??? ??100?????
?……????
firefox????????xss???????
????????……
于 06/26/07 12:56:23 发表  http://liumang.yo2.cn

Add Comments

This item is closed, it's not possible to add new comments to it or to vote on it

TrackBack