Grundsätzlich handelt es sich bei IHTMLElement5 und IHTMLElement6 um erweiterte Schnittstellen für das Haupt-IHTMLElement gemäß der folgenden Versionsregeln:
IHTMLElement IE4
IHTMLElement2 IE5
IHTMLElement3 IE5.5
IHTMLElement4 IE6
IHTMLElement5 IE8
IHTMLElement6 IE9
Natürlich enthält jede neue erweiterte Schnittstelle die alten Elemente sowie ihre eigenen neuen Elemente, Eigenschaften usw. Einige der Elemente (zum Beispiel .getAttribute) haben jedoch den gleichen Namen, wurden jedoch aktualisiert. Also lautet meine Frage: Wenn ich (sagen wir) IHTMLElement6 verwende, um mein HTML-Element zu deklarieren und den Code auf einem Client ausführe, auf dem nur IE6 installiert ist, wann wird mein Objekt einfach scheitern und als Null/Nothing bleiben, wenn ich es setze, oder ist mshtml.dll schlau genug, um zu erkennen, was passiert, und wie im Verhalten von IHTMLElement4 (eigentlich IHTMLElement) standardmäßig umzuschalten?
Um die letzte Aussage in Klammern zu verdeutlichen, wurde .getAttribute in IHTMLElement hinzugefügt und in IHTMLElement5 und IHTMLElement6 aktualisiert - also, wenn jemand nur IE6 installiert hat, würde ich erwarten, dass sich das Verhalten auf IHTMLElement (nicht IHTMLElement4) zurücksetzt - und wenn das nicht der Fall ist, dann erwarte ich, dass mein Code abstürzt. Im Grunde genommen lautet meine Frage, was genau passieren wird?
Derzeit deklariere ich aus Angst wie verrückt alles als IHTMLElement, irgendwelche Ideen?
Danke.
Zusammenfassung der Frage (lesen, wenn notwendig, nur eine erneute Klarstellung für diejenigen, die sie benötigen): Ich möchte im Grunde genommen etwas als IHTMLElement6 deklarieren können, um die aktualisierten Methoden nutzen zu können, die denselben Namen zwischen IHTMLElement und IHTMLElement6 haben (wie z.B. .getAttribute). Auf diese Weise wird auf IE9-Benutzern die Version von .getAttribute von IHTMLElement6 genutzt, während gleichzeitig die Version von .getAttribute von IHTMLElement für (sagen wir) IE6-Benutzer funktioniert, ohne meinen Code zu brechen - hier kommt meine Frage ins Spiel: Wenn ich ein IHTMLElement6-Objekt verwende, auch wenn es eine IE9-Schnittstelle ist, wird dann die Version von .getAttribute von IHTMLElement (IE4-Schnittstelle) aktiviert/arbeiten oder erhalte ich eine Nullverweis-Ausnahme oder einen anderen Laufzeitfehler? Danke an alle.
Je mehr Antworten, desto besser, auch wenn es nur Ihre Meinung ist und Sie es nicht als Tatsache wissen, möchte ich Sie dennoch ermutigen, zu kommentieren und dabei mitzuteilen, ob Sie dies als Tatsache wissen oder ob es nur eine Meinung/Vermutung usw. ist. Danke.