各浏览器cloneNode方法的部分实现差异
cloneNode来自于Node,用来复制一个相同的节点元素。它有一个布尔类型的参数,如果为true则其子节点也会被拷贝。但在不同浏览器中它的表现有些地方却不同。下面依次列出。
一、IE6/7中radio和checkbox的checked和其它浏览器不同
1 2 3 4 5 6 7 | < input type="radio" checked="true" value="1"/> < input type="checkbox" checked="true" value="1"/> < script > var input = document.getElementsByTagName('input')[0]; var clone = input.cloneNode(true); alert(clone.checked); </ script > |
IE6/7 : false
IE8/9/Firefox12/Chrome18/Safar5/Opera11 : true
二、IE6/7/8中 input[type=text] 和textarea 的defaultValue和其它浏览器不同
1 2 3 4 5 6 | < input value="hello"/> < script > var input = document.getElementsByTagName('input')[0]; var clone = input.cloneNode(true); alert(clone.defaultValue); </ script > |
IE6/7/8 : ""
IE9/Firefox12/Chrome18/Safar5/Opera11 : "hello"
三、IE6/7/8中 option 的selected值和其它浏览器不同
1 2 3 4 5 6 7 8 9 10 | < select > < option value="1">1</ option > < option value="2" selected="selected">2</ option > < option value="3">3</ option > </ select > < script > var option = document.getElementsByTagName('option')[1]; var clone = option.cloneNode(true); alert(clone.selected); </ script > |
IE6/7/8 : false
IE9/Firefox12/Chrome18/Safar5/Opera11 : true
四、IE6/7/8中 script 的text属性值和其它浏览器不同
1 2 3 4 5 6 7 8 | < script > var a = 'test'; </ script > < script > var script = document.getElementsByTagName('script')[0]; var clone = script.cloneNode(true); alert(clone.text) </ script > |
IE6/7/8 : ""
IE9/Firefox12/Chrome18/Safar5/Opera11 : "var a = 'test';"
注:DOM4中cloneNode的参数是可选的,即可以不传参,此时默认为true。Firefox13将实现。
相关:
https://developer.mozilla.org/En/DOM/Node.cloneNode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义