Sto avendo un momento difficile convertire un NodeList
ad una matrice in IE 8. I seguenti opere perfettamente in Chrome, ma in IE 8 toArray()
non è riconosciuto come valido:Converti NodeList di serie
NodeList.prototype.toArray = function() {
var a = [];
for (var i = 0, len = this.length; i < len; i++) {
a[i] = this[i];
}
return a;
}
document.all.tags("div").toArray();
I ho provato ad aggiungere una funzione prototipo a un array solo per verificare il mio equilibrio e funziona correttamente. Questo mi fa pensare che IE 8 in realtà non restituisce un NodeList
? Ecco un esempio completo:
Che cosa sto facendo di sbagliato?
non esiste uno standard attuale, che dice che 'NodeList' deve essere una funzione di costruzione visibile e modificabile, o che se c'è una funzione di costruzione visibile come 'NodeList' che verrà usata come tipo di ritorno di tutti i metodi di ritorno di NodeList. (Dopo tutto, un NodeList 'childNodes' e un NodeList' getElementsByTagName' fanno cose molto diverse.) Il prototyping sugli oggetti JS nativi è specificato dallo standard ECMAScript ed è affidabile; la prototipazione su DOM Nodi e altri oggetti non definiti dallo standard di lingua non è affidabile e dovrebbe essere evitata. – bobince