2015-12-12 76 views
1

當我試圖克隆XML文檔對象瀏覽器,IE瀏覽器的行爲正確,但Safari瀏覽器版本5.1.7,它返回NULL,clonoNode()方法大教堂無法克隆給定的XML文檔對象

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

+0

doc-Document(轉換後的文檔) doc.cloneNode(true) - 返回null,我輸入錯誤,它的doc.clone不是d.clone。 Safari無法克隆,我不能使用其他框架。除了extjs。有沒有可以克隆的功能 –

回答

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方法克隆一個給定的元件,但我們需要克隆的文檔所以,首先我們克隆的元件和將它們轉換字符串然後將它們轉換文件。

但似乎很少記憶消耗, 無論如何任何人提供更好的解決方案。