Grundsätzlich sind IHTMLElement5 und IHTMLElement6 alle erweiterten Schnittstellen für das Haupt-IHTMLElement gemäß den untenstehenden 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 + ihre eigenen neuen Elemente, Eigenschaften usw. Einige der Elemente (zum Beispiel .getAttribute) haben jedoch denselben Namen, wurden aber aktualisiert. Meine Frage ist also, 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 fehlschlagen und als Null/Nothing bleiben, wenn ich es setze, oder ist mshtml.dll intelligent genug, um zu erkennen, was passiert, und wechselt standardmäßig zum Verhalten von IHTMLElement4 (eigentlich IHTMLElement)?
Nur zur Klarstellung des letzten Satzes in Klammern, .getAttribute wurde in IHTMLElement hinzugefügt und in IHTMLElement5 und IHTMLElement6 aktualisiert - daher würde ich erwarten, dass das Verhalten für jemanden, der nur IE6 installiert hat, auf IHTMLElement (nicht IHTMLElement4) zurückfällt - und falls dies nicht geschieht, erwarte ich, dass mein Code abstürzt. Kurz gesagt, meine Frage ist, was genau passieren wird?
Gerade jetzt, weil ich verrückte Angst habe, deklariere ich alles einfach 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 etwas als IHTMLElement6 deklarieren können, damit ich die aktualisierten Methoden nutzen kann, die zwischen IHTMLElement und IHTMLElement6 denselben Namen haben (wie z.B. .getAttribute). Auf diese Weise wird bei IE9-Benutzern die Version von .getAttribute von IHTMLElement6 genutzt, während gleichzeitig die Version von .getAttribute von IHTMLElement für (sagen wir mal) IE6-Benutzer ohne Unterbrechung meines Codes funktioniert - hier kommt meine Frage ins Spiel, wenn ein IHTMLElement6-Objekt verwendet wird, obwohl es eine IE9-Schnittstelle ist, wird die Version von .getAttribute von IHTMLElement (IE4-Schnittstelle) eintreten/funktionieren oder erhalte ich eine Nullverweis-Ausnahme oder einen anderen Laufzeitfehler? Danke an alle.
Je mehr Antworten, desto besser, auch wenn es nur eine Meinung oder ein Rätsel ist, möchte ich Sie trotzdem ermutigen zu kommentieren und uns wissen zu lassen, ob Sie dies als Tatsache wissen oder ob es nur eine Meinung/Vermutung usw. ist. Danke.