ID-zugewiesene DOM-Elemente und globale Eigenschaften
In einer früheren Frage wurde beobachtet, dass bestimmte DOM-Elemente mit IDs als Variable zugänglich sind Namen oder Eigenschaften des Fensterobjekts in Internet Explorer und Chrome. Zum Beispiel für das HTML-Element:
<div>
Die innerHTML-Eigenschaft kann wie folgt abgerufen werden:
alert(example.innerHTML); // Alerts "some text". alert(window["example"].innerHTML); // Alerts "some text".
Dies wirft die Fragen auf:
Eigenschaften und globale Zugänglichkeit
Das beabsichtigte Verhalten besteht darin, dass benannte Elemente zu offensichtlichen Eigenschaften des Dokumentobjekts werden. Dieser Ansatz ist jedoch problematisch, da es zu Konflikten zwischen Elementnamen und tatsächlichen Dokumenteigenschaften kommt.
Microsoft Internet Explorer verschärfte das Problem, indem benannte Elemente als Eigenschaften des Fensterobjekts zugewiesen wurden. Dies verkompliziert die Sache noch weiter, da Elementnamen vermieden werden müssen, die mit einem Mitglied des Dokuments oder Fensterobjekts übereinstimmen.
Probleme mit der globalen Zugänglichkeit
Außerdem werden benannte Elemente als sichtbar globalähnliche Variablen. Während globale Variablen- und Funktionsdeklarationen sie normalerweise überschatten, kann die Zuweisung eines Werts zu einer globalen Variablen mit einem passenden Namen zu Fehlern im Internet Explorer führen.
Best Practices
It Generell wird davon abgeraten, sich beim Erstellen globaler Variablen auf benannte Elemente als globale Eigenschaften zu verlassen oder die var-Deklaration wegzulassen. Aufgrund der breiteren Unterstützung und der geringeren Mehrdeutigkeit wird die Einhaltung von document.getElementById empfohlen. Erwägen Sie die Verwendung einer einfachen Wrapper-Funktion mit einem kürzeren Namen, wenn die Eingabe zum Problem wird.
Caching und Browser-Optimierung
Die Pflege eines ID-zu-Element-Suchcaches ist im Allgemeinen nicht erforderlich da Browser den getElementById-Aufruf oft durch eine schnelle Suche optimieren. Potenzielle Probleme entstehen, wenn Elemente IDs ändern oder dem Dokument hinzugefügt/entfernt werden.
Standardisierung und zukünftige Auswirkungen
Die HTML5-Spezifikation kodifiziert nun die bisher nicht standardmäßige Praxis von Hinzufügen benannter Elemente zu Dokument- und Fenstereigenschaften. Dies bedeutet, dass Firefox 4 diese Funktionalität auch unterstützen wird.
Fazit
Während es in bestimmten Browsern möglich ist, auf DOM-Elemente mit IDs als globale Eigenschaften zuzugreifen, ist dies in dieser Praxis der Fall aufgrund möglicher Konflikte und Unklarheiten entmutigt. Es ist besser, sich auf document.getElementById oder eine einfache Wrapper-Funktion zu verlassen.
Das obige ist der detaillierte Inhalt vonKann ich über die ID als globale Eigenschaften auf DOM-Elemente zugreifen, und sollte ich das tun?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!