Struppi: Gültigkeit von Name/Bezeichnungen

Beitrag lesen

Gibt wieder 'xxx'

Ja und? Das ist doch korrekt.

window.test hat halt Vorrang vor beispielsweise window.document.test.

Dann erklär mir bitte, warum hat document.images oder document.forms Vorrang vor window. Warum hat document.links nicht vorrang vor window? Warum werden aber document.forms und document.images gleich behandelt (es wird ja eine Liste erzeugt, wo beide Elemente vorkommen)?

Also nochmal: JavaScript erlaubt daß Weglassen der Hierarchie, wenn das Objekt eindeutig ist (auch wenn das per se als unsaubere Programmierung gilt). Daß es bei mehreren "test" zu für den Programmierer unerwünschten Effekten kommt, wenn man die Hierarchie dann einfach wegläßt, ist doch selbstverständlich. Welches "test" im Zweifel "gewinnt", dürfte *mindestens bei Objekten die parallel angesiedelt sind*, eine Sache des Browserprogrammierers sein.

Nochmal es existieren:

window.test
window.document.images.test
window.document.forms.test
window.document.links.test

Welches hat im Eventhandler Vorrang?

Nach den erkenntnissen die ich durch ausprobieren gefunden habe:
window.document.images.test | window.document.forms.test
window.test
window.document.links.test

Das hat keine Logik und ich finde keine Spezifikation wo das erklärt ist. Es hat auch nichts mit "parallel" zu tun. Im Falle von window gibt es das sowieso nicht, da dort das letzte alle vorherigen überschreibt.

Im Prinzip geht es darum, in welcher Reihenfolge durchsucht die JS Engine die Objekte innerhalb HTML Eventhandler? Und wieso erzeugt sie aus verschiedenen Collections eine einzige Liste? Und wieso bevorzugt sie manche Collections gegenüber anderen?

Struppi.