`

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示例

    easy-ui onchange/easy-ui添加onchange

    在本文中,我们将深入探讨如何在Easy-UI框架中使用`onchange`事件,以及如何获取组合框(Combobox)的当前选中值。Easy-UI是一个基于jQuery的轻量级前端开发框架,它提供了丰富的组件,如表格、窗口、菜单、对话框等...

    jQuery easy-ui 富客户端AJAX框架

    1. **组件丰富**:Easy-UI 提供了多种用户界面组件,如对话框(dialog)、表单(form)、面板(panel)、菜单(menu)、下拉选择框(combobox)、树形控件(tree)、表格(datagrid)等,满足开发各种复杂页面的需求...

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

    1. **树目录插件**:可能是一个实现文件或组织结构展示的示例,展示了如何使用Easy-UI的树形组件动态加载数据和进行交互操作。 2. **自动分页**:演示了如何配置表格的分页功能,自动根据数据量调整页面大小,提供...

    Easy-UI类库

    Easy-UI是一个轻量级的前端用户界面框架,专为构建高效、美观的B/S(Browser/Server)系统页面而设计。它以简洁的代码、丰富的组件和高度可定制性著称,使得开发者能够快速地创建出具有专业品质的网页应用。在网页...

    基于 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后台模板"是一款专为新手设计的易用型前端框架,它提供了标准的后台界面设计,集美观与实用性于一体。Easy-UI是一个基于HTML、CSS和JavaScript的轻量级前端开发框架,其核心是采用jQuery库,使得开发者...

    easy-ui框架

    这个压缩包文件中包含的是Easy-UI框架的一个特定版本——"jquery-easyui-EDT-1.4.5-build1",这表明它是一个经过编译和打包的版本,可能包含了优化和一些额外的功能。 Easy-UI的核心是jQuery库,它利用jQuery的强大...

    Easy-Ui后台搭建

    此外,Easy-Ui还支持各种交互控件,如按钮、下拉菜单、切换开关等,这些都大大简化了前端开发的工作。例如,添加一个触发弹出对话框的按钮: ```html ()"&gt;打开对话框 ``` ```javascript function showDialog() { $...

    easy-ui API DOM

    在实际应用中,了解如何有效地组织和管理Easy-UI代码,避免内存泄漏和性能问题,以及如何与其他库和框架(如Vue、React)配合使用,是提高开发效率和项目质量的关键。 总结起来,“easy-ui API DOM”涵盖了使用...

    jQuery UI以及jQuery easy-ui技术手册

    - **数据绑定**:Easy-UI的datagrid组件支持直接从服务器获取数据,实现了动态加载和分页,与后端数据交互更加便捷。 - **JSON配置**:通过JSON对象,开发者可以轻松配置组件的样式、行为和数据源,无需编写过多的...

    easy-ui资源

    标签"easy-ui舒适"表明这个资源可能包含了优化过的EasyUI版本或者是一些定制化的设计,提供了更舒适的用户体验,例如改进的布局、色彩搭配或是更友好的交互设计。 在压缩包文件名称列表中,"easyUI"可能是包含...

    Easy-Ui简单后台搭建

    在表单设计方面,Easy-Ui提供了各种输入控件,如文本框、下拉框、复选框等,它们都有对应的验证规则,能帮助我们确保用户输入的有效性。通过data-options属性,我们可以为每个表单元素指定特定的样式和行为。 按钮...

    easy-ui.zip

    【easy-ui.zip】是一款集合了三款基于Web的管理型系统框架的压缩包,主要包含HTML、CSS和JavaScript等静态资源。这些框架可能用于构建高效、美观且易于使用的后台管理系统。下面将详细介绍其中可能涉及的知识点。 1...

    jquery-easy-ui

    《jQuery Easy UI:构建高效前端界面的利器》 jQuery Easy UI 是一款基于 jQuery 的轻量级前端框架,专为简化Web界面开发而设计。它集合了一系列丰富的组件,如树形结构(Tree)、表格(Grid)、对话框(Dialog)、...

    easy-ui门户前端框架版本v1.7.5

    3. **easyloader.js**: easyloader是easy-ui的加载器,负责动态加载和管理页面所需的组件和资源,优化页面性能,避免一次性加载过多代码。 4. **jquery.easyui.mobile.js**: 这是针对移动设备优化的版本,适应触摸...

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

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

    添加easy-ui样式的style样式和具体的jsp页面示例

    确保文件路径正确无误,这样才能正常加载Easy-UI的样式和功能。 接下来,我们来创建一个简单的JSP页面示例。在JSP页面中,你可以使用Easy-UI的标签来快速生成组件。以下是一个包含标题、按钮和数据网格的示例: ``...

    jquery-easy-ui demo

    标题“jquery-easy-ui demo”表明我们将探讨这个框架的一些实际应用和示例,而“很好用的”描述则暗示了其易用性和实用性。 一、jQuery EasyUI 概述 jQuery EasyUI 是基于 jQuery 的轻量级框架,它集成了大量的 UI ...

    jquery-easy-ui-1.3.2

    这个框架的核心理念是“Easy”,旨在简化Web开发过程中与用户交互界面相关的复杂性。在版本1.3.2中,它已经相当成熟和完善,包含了众多实用的功能,如对话框、表单、树形结构、表格、菜单等,大大提升了开发效率。 ...

Global site tag (gtag.js) - Google Analytics