`
clue
  • 浏览: 30432 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

IE6中释放form节点遇到的问题

    博客分类:
  • web
阅读更多
在尝试修改Ext库,完善内存释放时发现
不管怎么改,form节点都一直释放不掉
自己写例子时,就算创建了dom节点后只赋给一个变量,sIEve显示的引用也有3个
抓狂了很久以后,上网查了下资料,发现是IE在作怪:
http://blog.archive.jpsykes.com/92/ie6-form-tag-orphans/index.html
作者也试过很多办法来清除,无一例外全失败了。

引用
Approaches Tested

    * innerHTML on parent (most common garbage collection)
    * Using removeNode, rather than removeChild
    * Using replaceNode before removing it
    * Resetting all variables before removing it
    * Giving it a HasLayout (I was desperate)
    * Setting AutoComplete to off on the form
    * collectGarbage()
    * Crockfords Purge
    * …


后面给的一个例子,其实是重用form节点:
function MyForm() {
	this.InstanceId = ''+MyForm.InstanceCounter++;
	MyForm.Instances[this.InstanceId] = this;
	for( var key in MyForm.Recycle ) {
		this.Node = MyForm.Recycle[key];
		delete MyForm.Recycle[key];
	}
	if( this.Node==null ) {
		this.Node = document.createElement('FORM');
	}
	this.Node.InstanceId = this.InstanceId;
}

MyForm.prototype.InstanceId = null;
MyForm.prototype.Node = null;

MyForm.prototype.destroy = function() {
	if( this.Node.parentNode ) this.Node.parentNode.removeChild(this.Node);
	MyForm.Recycle[this.InstanceId] = this.Node;
	delete MyForm.Instances[this.InstanceId];
	this.Node = null;
}

MyForm.InstanceCounter = 1;
MyForm.Instances = {};
MyForm.Recycle = {};

// create and destroy 10000 forms
var a;
for( var i = 0; i <= 5000; i++){

	//create a new form
	var b = new MyForm();
	// add the new form to the body
	var a = document.body.appendChild(b.Node);
	//destroy the form
	b.destroy();
	//break;

}


无奈中。。。又不敢直接修改Ext框架的逻辑
看在这个节点占用内存也不多的面子上,不管它了。
分享到:
评论
1 楼 TinyJimmy 2009-09-22  
抓狂的很罗

相关推荐

    IE6升级到IE9兼容性问题和操作手册

    总之,从IE6升级到IE9的过程,开发者需要关注HTML的规范性、CSS的兼容性和JavaScript/DOM的适应性,以确保网页在新版本的IE中正常运行。同时,对于可能出现的视觉差异和功能缺失,需要进行有针对性的调整和优化。

    致WEB前端开发者:IE6-IE11兼容性问题列表及解决办法

    1. 结束标记问题:在 IE7-IE8 中,如果缺少结束标记的 P 元素后跟 TABLE、FORM、NOFRAMES 或 NOSCRIPT 元素,会自动添加结束标记。解决办法是,确保所有 HTML 元素都有正确的结束标记。 2. 有效标记支持:IE8 开始...

    FORM表单中文乱码问题分析与解决

    在 Web 开发中,中文乱码问题是一个常见的问题,尤其是在FORM表单传递参数时。这个问题的根本原因是对中文的编码与解码方式不一致。我们可以理解为对中文的加密与解密的密钥不一致。例如,用UTF-8对中文编码而用ISO-...

    IE6-IE9兼容性问题列表及解决办法

    本文旨在系统梳理IE6至IE9之间遇到的主要兼容性问题,并提出相应的解决策略。 ## 第一章:HTML ### 第一节:IE7-IE8更新 #### 1. 如果缺少结束标记的`&lt;p&gt;`元素后跟`&lt;table&gt;`, `&lt;form&gt;`, `&lt;noframes&gt;`或`...

    IE6的POST请求无data的的问题

    标题“IE6的POST请求无data的的问题”所提及的是一个经典的前端开发中遇到的技术难题,主要涉及到浏览器兼容性问题,特别是针对老版本的Internet Explorer(IE6)。在Web应用程序中,POST请求是向服务器发送数据的一...

    删除TreeView节点以及其子节点

    如果遇到问题,可以查看`Unit2.pas`和`Unit2.dfm`文件,理解并调试代码。 通过理解和应用上述知识点,你可以掌握在Delphi中删除`TreeView`节点及其子节点的方法,这对于开发涉及树形结构数据管理的应用程序非常重要...

    Vue+Antv X6绘制流程图demo

    需求2:流程图中的节点之间可以进行连线交互 需求3:点击对应的节点后可以进行操作节点(删除、查看节点的相关信息参数) 需求4:鼠标悬浮在连线上时可以删除当前连线 隐含需求:节点样式需要满足`UI`设计,所以需要...

    ORACLE ebs FORM开发中form个性化处理

    在"metalink"这个文件中,用户可能能找到Oracle官方对EBS Form个性化问题的解答,以及社区专家的经验分享。通过查阅Metalink,开发者可以获取最新的技术更新,解决遇到的问题,并学习最佳实践。 总的来说,EBS Form...

    TreeView 单击一节点弹出相应的窗体

    本话题主要关注如何实现“单击`TreeView`中的一个节点时,右侧窗体加载相应内容”的功能。这种设计常用于构建具有导航功能的用户界面,提升用户体验,使用户能够快速访问所需信息。 首先,我们需要理解`TreeView`...

    前端设计IE6IE7IE8IE9FF问题汇总IE和FirFox兼容问题[参照].pdf

    6. **变量名与HTML对象id相同问题**:在Firefox中,对象ID不会被视为JavaScript变量名,而在IE中可以。为避免歧义,应在声明变量时加上`var`关键字,并避免使用与HTML对象ID相同的变量名。 7. **event.x与event.y...

    Form2调用Form1控件的解决方案

    接下来的问题是:如何实现在`Form2`中的某个操作能够反过来影响`Form1`中的某些控件状态或行为?这个问题在多窗体应用中十分常见且实用。 #### 解决方案概述 本文将详细介绍一种通过使用C#中的引用参数(`ref`)来...

    如何在树图中生成假节点

    在`Form3`的构造函数中,`treeView1.Nodes[0].Expand()`这行代码表示展开树图的第一个节点,这意味着在程序启动时,用户能看到树图的第一个层级。 接下来,`OpenFileDialog`用于让用户选择Excel文件,`xsldata`函数...

    Delphi 调用DLL文件中的FORM

    避免在主应用程序中直接释放DLL的FORM对象。 - 异步操作:如果DLL中的FORM涉及到复杂的异步操作,需要考虑线程同步和通信问题。 - 错误处理:在调用DLL函数时,应检查返回值和可能出现的错误。 5. **调试与测试**...

    c#中treeview控件节点图代码

    在给定的代码片段中,我们可以看到一个基础的`TreeView`控件节点创建过程,尽管代码中包含了一些非标准字符,但核心逻辑依然清晰。下面,我们将深入探讨这一知识点,包括`TreeView`控件的基本概念、如何在C#中使用它...

    Form表单问题及其他安全问题

    Form表单问题

    Form1调用Form2 ,From2回传值或调用Form1内的方法。

    这在开发GUI应用程序时尤为常见,例如一个窗体(Form1)打开另一个窗体(Form2),然后Form2执行某些操作并返回结果给Form1,或者调用Form1中的方法。这个过程可以通过多种方式实现,其中一种常见且灵活的方法是使用...

    C# form1 ,form2 互相传值

    在C#编程中,Form1和Form2之间的数据传递是一个常见的需求,特别是在开发Windows桌面应用程序时。本主题将深入探讨如何在两个独立的窗体之间有效地传递数据,以实现Form1的TextBox控件值传递到Form2,以及Form2的...

    兼容IE8、IE9的html5shiv.min、respond、jquery.form

    ie8和ie9浏览器下兼容问题; 1、bootstrap3部分样式失效,在页面中引用respond.min.js和html5shiv.min.js ; 2、另外提供formData不可用情况下使用的jquery.form.min.js资源文件

Global site tag (gtag.js) - Google Analytics