`

easy-ui控件加载Tab导致内存溢出

    博客分类:
  • ui
阅读更多
    今天测试部提了个故障,我负责的模块使用 easy-ui 控件的 tab 方式实现的,会出现内存溢出,在 IE6 上尤为明显。当一次加载大量 tab 的时候,连续刷新,浏览器会很快崩溃。后来查了些资料,发现很少有这方面的解决方案,我这里今天总结了一下。

    首先,我这边的 tab 是两层 Tab,为了解决 select 组件在 IE6 上会被覆盖的 Bug,采用了 $("#id").html("<iframe ............/>");的方式实现,(中间懒得写,打架应该都明白的  呵呵),iframe是为了显示 tab 页的内容。在关闭或者刷新整个 Tab 的时候,iframe 所占用的内存并不能完全释放,当操作的 Tab 越多,内存占用越大,随时可能导致浏览器崩溃。现在给出一个有效的解决方法。

    1、在jquery.tabs.js 中查找 panel("options").tab.remove();(需要根据 easyui 的版本来确定此段代码所在的 js 文件,可以借助 eclipse 的 search 功能查找)。在此段代码后,添加如下代码片段:
      var frame = $('iframe',tab);
      if(frame.length>0){
          frame[0].contentWindow.document.write('');
          frame[0].contentWindow.close();
          frame.remove();
          if($browser.msize){
              CollectGarbage();
          }
      }
    2、此时可以使用 Sieve 进行测试,工具可以到下面的网站下载。
       http://home.wanadoo.nl/jsrosman/
    3、如果上述方式已经修改还是会存在内存溢出的情况,说明 iframe 还是没有完全释放,此时,可以在加载 Tab 的  jsp 文件中,添加如下函数

      function reClearIframe(id){
          var el= $("#id");
          var  frame = el.contentWindow;
          if(el){
              el.src='abort:blank';
              try{
                  iframe.document.write('');
                  iframe.documnet.clear();
                  iframe.remove();
               }catch(e){}
               document.body.removeChild;
          }
      }
然后再次jsp页面的 body 属性中添加 onunload属性。如:<body onunload="clearIframe">
并在函数中实现:
      function clearIframe(){
          reClearIframe(iframe1);
          reClearIframe(iframe2);
          reClearIframe(iframe3);
          ........
      }
其中  iframe1、iframe2、 iframe3 为加载 Tab 页的 ifarme 的id。

以上第一和第三步任一一种实现方式单独都可以有效的解决加载 Tab 内存溢出的情况,但是。有时,会受到其他引入的 js 的影响。也可以两个都用,但是会,给人觉得有重复释放 iframe 的感觉。呵呵...本来 iframe 在 IE6 就存在很多 Bug 。
    最后,希望能对大家有帮助吧。期待高手们有更好的解决方法,如果有,可以发送到我邮箱 liuyang101021@163.com  谢谢















分享到:
评论

相关推荐

    EASY-UI示例;EASY-UI示例

    EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例EASY-UI示例

    基于 jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统.zip

    基于 jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统 基于 jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统 基于 jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统 基于 jsp...

    easy-ui资源

    easy-ui相关资源,java后台美化集成,很实用的工具;easy-ui相关资源,java后台美化集成,很实用的工具

    easy-ui onchange/easy-ui添加onchange

    文档中详细描述了easy-ui如何添加onchange,以及如何获取组合框当前选中值。压缩包中还包括了相关的easy-ui demo供大家使用。自己总结的跟大家分享下。

    jquery-easy-ui-1.3.2

    jquery-easy-ui-1.3.2

    jquery-easy-ui

    jquery-easy-ui 各种demo 例如tree,

    jquery-easy-ui demo

    很好用的jquery-easy-ui demo

    jQuery easy-ui 富客户端AJAX框架

    easy-ui jQuery富客户端框架 AJAX框架 。

    JQuery Easy-UI DataGrid性能调优

    JQuery Easy-UI DataGrid性能调优文档,欢迎喜欢的朋友下载学习!

    easy-ui.zip

    本人从网上搜集的三款easy-ui的管理型系统的框架,全部为静态资源

    SSH+EASY-UI的账务管理系统

    用MAVEN,SPRING,HIBERNATE,STRUTS配置账务管理系统,前台界面EASY-UI,功能比较齐全,算是个小项目吧。jar包的话由于太大,反正如果有maven都可以自动下载的,用的IDE是ECLIPSE JUNIO,maven版本是3.0.4。 还需要...

    Easy-Ui后台搭建

    Easy-Ui后台搭建

    jquery easy-ui

    jquery easy-ui的整体文件包,包括树,表单,表格等等,有demo,可以看相关demo后自己导入到项目用。

    java,easy-ui后台管理系统模板.docx

    java,easy-ui后台管理系统模板.docxjava,easy-ui后台管理系统模板.docxjava,easy-ui后台管理系统模板.docxjava,easy-ui后台管理系统模板.docxjava,easy-ui后台管理系统模板.docxjava,easy-ui后台管理系统模板....

    Easy-UI类库

    Easy-UI类库,轻松画出绚丽多彩的B/S页面,值得收藏

    java,easy-ui后台管理系统模板.pdf

    java,easy-ui后台管理系统模板.pdfjava,easy-ui后台管理系统模板.pdfjava,easy-ui后台管理系统模板.pdfjava,easy-ui后台管理系统模板.pdfjava,easy-ui后台管理系统模板.pdfjava,easy-ui后台管理系统模板.pdfjava,...

    Easy-Ui简单后台搭建

    Easy-Ui简单后台搭建Easy-Ui简单后台搭建Easy-Ui简单后台搭建Easy-Ui简单后台搭建Easy-Ui简单后台搭建

    非常好用的Easy-UI前段框架

    框架集成树目录插件,自动分页,嫌写前端框架麻烦的小伙伴们可以直接更改使用,节省时间,好用不忘点赞哦!!!

Global site tag (gtag.js) - Google Analytics