Perché questo codice E4X non rispetta lo spazio dei nomi predefinito?
-
03-07-2019 - |
Domanda
Sto hackerando un'estensione di Firefox, provando a usare E4X. Tuttavia, ho riscontrato uno strano problema:
var myXml = <test xmlns="http://test.com">
Hey
<inner>
Guys
</inner>
</test>;
var ns = myXml.namespace();
default xml namespace = ns;
this.log(myXml.*::inner);
this.log(myXml.ns::inner);
this.log(myXml.inner);
Le prime due istruzioni di registro stampano " Guys " ;. Il terzo è vuoto. Cosa sta succedendo? Ho specificato lo spazio dei nomi predefinito ed è in effetti esattamente la stessa cosa che sto usando nella seconda istruzione di registro. Perché non funziona?
La documentazione di Mozilla suggerisce che dovrebbe funzionare.
Soluzione
In Firefox 3 il codice viene eseguito come previsto. Forse ti imbatti in un bug trovato nella versione precedente di Gecko?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow