Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[BUG] UCHOME里面一个JS性能比较严重的问题--不把内存当回事

[复制链接]
hudie0436 发表于 2011-8-25 17:49:13 | 显示全部楼层 |阅读模式
本帖最后由 hudie0436 于 2011-8-25 17:55 编辑

熟悉UCHOME的朋友可以

模板文件中的space_status.htm这个文件,也就是发布心情记录的地方
这里有一个很严重的问题
如果用户不停的点发布心情的文本框,让它获得焦点,在失去焦点,那么内存无限的增长,最后浏览器只能挂掉了
取出原始文件中的一段出来:

  1. var div = $('mood_face_bg');
  2. if(div) {
  3. div.parentNode.removeChild(div);
  4. }
  5. div = document.createElement('div');
  6. div.id = 'mood_face_bg';
  7. div.style.position = 'absolute';
  8. div.style.left = div.style.top = '0px';
  9. div.style.width = '100%';
  10. div.style.height = document.body.scrollHeight + 'px';
  11. div.style.backgroundColor = '#000';
  12. div.style.zIndex = 10000;
  13. div.style.display = 'none';
  14. div.style.filter = 'alpha(opacity=0)';
  15. div.style.opacity = 0;
  16. div.onclick = function() {
  17. hiddenstatus();
  18. }
  19. $('append_parent').appendChild(div);
复制代码


此段代码完全是在自残,不断的生成去除元素节点,而且主要是生成一个跟页面大小一样的层,要命啊
这种情况,测试了一下,内存是成倍的增长的,难怪一个MM同事说浏览器太卡,点不动

简单的优化一下:

  1. var div = $('mood_face_bg');
  2. if(div) {
  3.   div.style.display = 'none';  //不用去掉,只用隐藏一下就OK
  4. } else {
  5. div = document.createElement('div');
  6. div.id = 'mood_face_bg';
  7. div.style.position = 'absolute';
  8. div.style.left = div.style.top = '0px';
  9. div.style.width = '100%';
  10. div.style.height = '900px'; //宽度自己设定一个固定的好点,不然页面要是很长很长,那内存伤不起啊
  11. div.style.backgroundColor = '#000';
  12. div.style.zIndex = 10000;
  13. div.style.display = 'none';
  14. div.style.filter = 'alpha(opacity=0)';
  15. div.style.opacity = 0;
  16. div.onclick = function() {
  17. hiddenstatus();
  18. }
  19. $('append_parent').appendChild(div);
  20. }
复制代码

转载请写明出处:www.onlypo.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-4-27 18:58 , Processed in 0.196932 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表