clonoNode()Dom方法无法克隆给定的Xml Doc对象

时间:2015-12-12 07:56:33

标签: javascript clonenode

当我尝试克隆Xml文档对象Chrome时,IE表现正常但Safari浏览器版本5.1.7返回null,

Follwing是我的示例代码 xml字符串

var xmlStr="<tr> <td class="dsd">  </td><td class='name'></td></tr>"

var doc=getXmlDoc(xmlStr) (i.e getXmlDoc is my custom function which returns string to doc using DOM Parser)

funtion getXmlDoc(str)
{
parser = new DOMParser();  
xmlDoc = parser.parseFromString(str,"text/xml");
return xmlDoc
}

doc-Document(converted Document)

 d.cloneNode(true)-Returns null


   When i try to clone Entire Document,unable to clone
But d.documentElement.cloneNode(true) works

但是当我尝试克隆根节点时,我可以。

仅在Safari浏览器5.1.7中测试此问题。

I am working on ExtJs Framework, where EXt.clone() also returns null

提前致谢, Praveenkumar

1 个答案:

答案 0 :(得分:0)

由于Safari不会克隆整个文档,但它仍然克隆(支持)documentElement。例如

var xmlStr="<tr> <td class="dsd">  </td><td class='name'></td></tr>";
//convert the above string into document
//funtion getXmlDoc(str)
{
parser = new DOMParser();  
xmlDoc = parser.parseFromString(str,"text/xml");
return xmlDoc
}


var newDoc=getXmlDoc(str);
//after Converting str to newDoc 
var copy=newDoc.cloneNode(true);//will return error
//Let see How to Done
var copy=getXmlDoc(getXmlStr(newDoc.documentElement.cloneNode(true)));

解释  CloneNode方法克隆了一个给定的元素,但是我们需要克隆一个文件,所以首先我们克隆元素并将它们转换成字符串,然后将它们转换为Doc。

但它似乎很少消耗内存, 无论如何,任何人都提供更好的解决方案。