Globale Eigenschaften und DOM-Baumelemente mit IDs
In Webbrowsern wie Internet Explorer und Chrome kann über das globale Objekt auf Elemente im DOM-Baum mit zugewiesenen IDs zugegriffen werden Verwenden ihrer ID als Variablennamen oder Eigenschaft des Fensterobjekts. Beispielsweise kann ein Element mit der ID „Beispiel“ abgerufen werden mit:
alert(example.innerHTML); // Alerts "some text".
oder
alert(window["example"].innerHTML); // Alerts "some text".
Von diesem Verhalten wird jedoch aus mehreren Gründen abgeraten:
-
Konflikt mit nativen Eigenschaften: Benannte Elemente werden zu Eigenschaften des Dokumentobjekts, was zu Konflikten mit seinen tatsächlichen Eigenschaften führen kann. IE verschärft dies noch, indem es auch benannte Elemente als Eigenschaften des Fensterobjekts hinzufügt, was möglicherweise mit vorhandenen Mitgliedern kollidiert.
-
Sichtbarkeit des globalen Bereichs: Diese Elemente werden als globale Variablen sichtbar. Während echte globale Variablen sie im Code beschatten, kann das Weglassen der var-Deklaration bei Zuweisungen zu globalen Variablen mit widersprüchlichen Namen den Wert des Elements versehentlich ändern.
-
Mangelnde Unterstützung in allen Browsern: Nur IE, Chrome , und Opera unterstützte dieses Verhalten zunächst, wodurch es auf verschiedenen Plattformen inkonsistent wurde.
-
Veraltet in HTML5: Die HTML5-Spezifikation hat dieses Verhalten standardisiert und auf Firefox ausgeweitet. Allerdings gilt es immer noch als schlechte Praxis, sich darauf zu verlassen, dass benannte Elemente im Fenster oder als globale Elemente sichtbar sind.
Stattdessen ist es vorzuziehen, die standardisierte getElementById-Methode zum Abrufen von Elementen aus dem DOM-Baum zu verwenden, z es wird allgemein unterstützt und ist weniger zweideutig.
Das obige ist der detaillierte Inhalt vonWarum wird vom Zugriff auf DOM-Elemente über globale Eigenschaften abgeraten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn