Hallo,
Nur der IE7 sagt er kennt kein Node-Objekt.
Die Konstruktoren der DOM-Objekte und deren Prototypen bieten ältere IEs nicht an. Du kannst zwar Object.prototype erweitern, aber auf DOM-Elemente sind davon nicht betroffen. Das liegt daran, dass es eine Trennung zwischen DOM-Objekten und JScript-Objekten gibt. Das sind sozusagen zwei Welten. Die DOM-Objekte funktionieren nicht nach den Regeln der JScript-Objekte. DOM-Objekte haben keine constructor-Eigenschaft und ihre Identifier Resolution verläuft nicht entlang einer nachvollziehbaren Prototype-Chain. Mit IE 8 hat sich das ein wenig geändert. Es gibt aber immer noch eine Trennung zwischen ECMAScript/JScript und DOM. Erst mit IE 9 verhalten sich die DOM-Objekte wie echte ECMAScript-Objekte, zumindest was Konstruktoren und Prototypen angeht, welche nun zugänglich und erweiterbar sind.
Was die Erweiterung von DOM-Objekten angeht, so gibt es drei Möglichkeiten:
- Es nicht zu tun und Helferfunktionen wie addEvent in einer Bibliothek sammeln und die Elemente als Parameter übergeben.
- Die einzelnen Elementobjekte zu kapseln und sie zu erweitern, wie PrototypeJS und Mootols es tun. Das ist aber keine gute Idee.
- Wrapperobjekte zu schaffen, welche die browserübergreifenden Helferfunktionen anbieten. So macht es z.B. jQuery.
Mathias