EonerCMS——作一个仿桌面系统的CMS(十-附最新源码)

  废话很少说,继上次遗留的问题——内存泄漏。
  趁周末,查了好多资料,也问了好多JS高手,大体是这么个状况。由于我每打开一个窗口,就绑定了一个永久性的dom元素,而dom元素的回收是靠计数器,计数器是会累加的,若是没有清零,即使删掉了节点,其实仍是驻留在内存中。
  既然大体明白了原理,处理起来就相对比较简单了,就一句话,首先先看下原先的关闭窗口的代码php

//关闭
    $('.task-window li[window="'+obj.attr('window')+'"]').remove();
    obj.fadeOut("500",function(){$(this).remove();});

  修改后html

//关闭
    $('.task-window li[window="'+obj.attr('window')+'"]').remove();
    obj.fadeOut("500",function(){$(this).html("").remove();});

  咱们看到,其实我就是先清空了html代码,而后再删除了节点。
  而后此次我还更新了事件绑定,由于窗口的建立、关闭、移动等事件,其实都是同样的,因此事件绑定我单独拎了出来,而非建立dom元素的时候进行绑定,这样只需注册一次,并且这样也能减小内存的占用吧,这个我没研究过,但愿有人能帮我解答下,事件越可能是不是内存也会占用越多?
  此次就更新了这些,写的比较少,由于代码修改没花太多时间,大部分都在学习和思考上,由于本身自己对js的生命周期、内存释放/泄漏不太了解,因此就花了点时间去了解,写的不对的地方,还但愿你们指出。
  测试地址:http://saw.caifutang.com/eone...
  源码:点击下载
  PS:IE下测试内存占用的小工具sIEve,如何使用能够看下这个连接,感受还挺好用的。
转载于猿2048:➸《EonerCMS——作一个仿桌面系统的CMS(十-附最新源码)》dom

相关文章
相关标签/搜索