prüfen diese jsfiddle separat in Chrome und Firefox: http://jsfiddle.net/9aE2p/1/hasChildNodes() von Attributknoten zurückgeben unterschiedliche Ergebnisse für Chrome und Firefox
auch den gleichen Code einfügen hier:
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();
}
Was ich zu bemerken ist, dass hasChildNodes() gibt false für Firefox und true für Chrome zurück.
Wenn ein nodeType ein Attributknoten ist, hat er in Chrome einen untergeordneten Knoten, der den tatsächlichen Wert hat. Aber in Firefox hat es keinen Kindknoten und der Wert wird im Attributknoten selbst gespeichert.
Ich bin neugierig zu wissen, gibt es Dokumentation zu diesem feinen Unterschied?
Ich habe bereits die folgenden Dokumente, konnte aber keine solche Besonderheiten nicht finden:
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
interessiert, die Opera stimmte mit Chrome – dmi3y
Vielleicht hat es mit Webkit vs Gecko zu tun. Basiert Opera auf Webkit basiert? – bits
nein, sie haben eigene presto, rate sehr alt – dmi3y