Wie zu erkennen HTMLCollection/NodeList in JavaScript?

Ich bin nicht sicher, dass meine aktuellen Implementierung zur Verfügung steht die ganze Zeit:

function isNodeList(nodes) {
    var result = Object.prototype.toString.call(nodes);
    //modern browser such as IE9 /firefox /chrome etc.
    if (result === '[object HTMLCollection]' || result === '[object NodeList]') {
        return true;
    }
    //ie 6/7/8
    if (typeof(nodes) != 'object') {
        return false;
    }
    //detect length and item 
    if (!('length' in nodes) || !('item' in nodes)) {
        return false;
    }
    //use the trick NodeList(index),all browsers support
    try {
        if (nodes(0) === null || (nodes(0) && nodes(0).tagName)) return true;
    }
    catch (e) {
        return false;
    }
    return false;
}

Einer gemeinsamen situation ist {Länge:1,Artikelnummer:function(){return [];}}
Der Wert von Ergebnis, in chrome /safari /opera '[object NodeList]'.
In firefox und IE 9 , es ist '[object HTMLCollection]'.

Den standard-Wert?

Wie um zu überprüfen, ob ein Objekt eine Instanz einer NodeList im IE?
Ball -- typeof Knoten.item gibt 'Zeichenfolge' im ie6,nicht 'funktionieren'.also brauchen wir den Nachweis.

InformationsquelleAutor simon xu | 2011-08-30

Schreibe einen Kommentar