2012-11-21 59 views
6

入住此的jsfiddle分別返回不同的結果爲Chrome和Firefox:http://jsfiddle.net/9aE2p/1/hasChildNodes()在Chrome和Firefox

而且,這裏粘貼相同的代碼:

var xmlStr = '<?xml version="1.0" encoding="UTF-8"?><abc abc_attr="abc_attr_value"><abc_child abc_child_attr="abc_child_attr_value1"/><abc_child abc_child_attr="abc_child_attr_value2"/></abc>'; 

var parser = new DOMParser(); 
var xmlDoc = parser.parseFromString(xmlStr, "text/xml"); 

var path = 'abc/@abc_attr'; 

var nodes = xmlDoc.evaluate(path, xmlDoc, null, XPathResult.ANY_TYPE, null); 

var result = nodes.iterateNext(); 

while (result) { 
    var textContent = '<BR>result.textContent: "' + result.textContent + '"'; 
    var nodeType = '<BR>result.nodeType: "' + result.nodeType + '"'; 
    var resultHasChildren = '<BR>result.hasChildNodes(): ' + result.hasChildNodes(); 

    document.write(nodeType); 
    document.write(textContent); 
    document.write(resultHasChildren); 

    result = nodes.iterateNext(); 
} 

我所注意到的是, hasChildNodes()對於Firefox返回false,對於Chrome則返回true。

如果nodeType是屬性節點,那麼在Chrome中它有一個具有實際值的子節點。 但在Firefox中,它沒有任何子節點,並且該值存儲在屬性節點本身內。

我很想知道是否有關於這種細微差別的任何文檔?

我已經檢查了以下文件,但無法找到任何這樣的細節:

https://developer.mozilla.org/en-US/docs/DOM/Node.hasChildNodes

http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-810594187

+0

感興趣的人之一,歌劇院贊同鉻 – dmi3y

+0

也許它與Webkit vs Gecko有關。 Opera是基於webkit的嗎? – bits

+0

nope,他們有自己的presto,猜想很老的 – dmi3y

回答