Scegli questa jsfiddle separatamente in Chrome e Firefox: http://jsfiddle.net/9aE2p/1/hasChildNodes() di nodi di attributi restituiscono risultati diversi per Chrome e Firefox
incollando anche lo stesso codice qui:
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();
}
Quello che sto notando è che hasChildNodes() restituisce false per Firefox e true per Chrome.
Se un nodeType è un nodo di attributo, in Chrome ha un nodo figlio che ha il valore effettivo. Ma in Firefox, non ha alcun nodo figlio e il valore è memorizzato all'interno del nodo dell'attributo stesso.
Sono curioso di sapere se c'è qualche documentazione su questa sottile differenza?
ho già controllato i seguenti documenti, ma non abbiamo trovato nessuna tali specifiche:
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
interessato, l'Opera concordato con Chrome – dmi3y
Forse ha a che fare con Webkit vs Gecko. Opera è basata sul webkit? – bits
no, hanno proprio presto, indovina uno molto vecchio uno – dmi3y