Mam twardy czas konwersji NodeList
do tablicy w IE 8. Następujące prace doskonale w Chrome, ale w IE 8 toArray()
nie jest uznany za ważny:Konwersja NodeList do tablicy
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 próbowałem dodać funkcję prototypu do tablicy tylko po to, aby sprawdzić moje zdrowie psychiczne i działa poprawnie. To sprawia, że myślę, że IE 8 faktycznie nie zwraca NodeList
? Oto pełny przykład:
Co robię źle?
Nie ma obecnie standardem, który mówi, że 'NodeList' musi być widoczny i dowolnie zmieniana funkcja konstruktor, lub że jeśli istnieje funkcja konstruktora widoczna jako 'NodeList', która będzie używana jako typ zwracany przez wszystkie metody zwracania węzła. (W końcu, węzeł 'childNodes' NodeList i' getElementsByTagName' NodeList robią bardzo różne rzeczy.) Prototypowanie do natywnych obiektów JS jest określone przez standard ECMAScript i jest niezawodne; prototypowanie do węzłów DOM i innych obiektów nie zdefiniowanych przez standard językowy jest niewiarygodne i powinno się ich unikać. – bobince