Camping_RIDER: <form action=""> vs. <form action="$_SERVER['PHP_SELF']">

Beitrag lesen

Aloha ;)

Für das HTML-Attribut (das du ja nie mit JS setzt, sondern das vielmehr seinerseits beim Laden des Dokuments das IDL-Attribut bzw. das DOM-Attribut setzt) ist ein Leerstring nie erlaubt.

Und das finde ich eben nicht logisch.

(Beachte noch meine Editierung, ich hab (offensichtlich nachdem du auf Antworten gedrückt hast) noch an der Formulierung gefeilt.)

Das ist dann logisch, wenn man sich klarmacht, dass das IDL-Attribut und das HTML-Attribut zwar gleich heißen (und das HTML-Attribut das Setzen des IDL-Attributs beeinflusst), dass sie aber ansonsten aus vollkommen unterschiedlichen Welten stammen. Das HTML-Attribut ist integraler Bestandteil der Spezifikation für HTML und die dafür geltenden Beschränkungen richten sich nach den Bedürfnissen von HTML, einer Auszeichnungssprache. Ein Leerstring als Attributswert hat keine Aussage und lässt sogar intuitiv falsche Schlüsse („das wird nirgendwohin gesendet“) zu. Deshalb möchte man das vermeiden und setzt auf HTML-Ebene fest, dass ein action-Attribut immer sagen soll, wohin das Skript gesendet wird - und wenn man es nirgendwo anders hinsenden will muss man das dann gar nicht angeben. Diese Sichtweise ergibt Sinn.

Das IDL-Attribut auf der anderen Seite ist beispielsweise in JS im DOM eingebettet - und in JavaScript ist der Default-Wert für nicht gesetzte DOM-Eigenschaften eben "".[1]

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[

  1. Spontan würde ich da auch eher auf undefined setzen, wenn es diesen Wert schon gibt, aber es mag Gründe geben, warum das nicht getan wird - immerhin ist das ja im gesamten DOM nicht der Fall. Möglicherweise hängt das damit zusammen, dass DOM nicht die einzige Anwendung von IDL ist (schätzungsweise) und der Leerstring an anderer Stelle das beste zur Verfügung stehende Ausdrucksmittel ist. ↩︎