IDL
Eine IDL (Interface Description Language) ist eine generische Sprache, die verwendet wird, um Objektschnittstellen unabhängig von einer bestimmten Programmiersprache zu spezifizieren.
Inhalts- versus IDL-Attribute
In HTML haben die meisten Attribute zwei Aspekte: das Inhaltsattribut und das IDL-Attribut.
Das Inhaltsattribut ist das Attribut, wie Sie es im Inhalt festlegen (im HTML-Code), und Sie können es mit element.setAttribute()
oder element.getAttribute()
festlegen oder abrufen. Das Inhaltsattribut ist immer ein String, selbst wenn der erwartete Wert eine ganze Zahl sein sollte. Um zum Beispiel das maxlength
eines <input>
-Elements auf 42 mit dem Inhaltsattribut festzulegen, müssen Sie setAttribute("maxlength", "42")
für dieses Element aufrufen.
Das IDL-Attribut ist auch als JavaScript-Eigenschaft bekannt. Dies sind die Attribute, die Sie mit JavaScript-Eigenschaften wie element.foo
lesen oder setzen können. Das IDL-Attribut verwendet immer (kann aber transformieren) das zugrundeliegende Inhaltsattribut, um einen Wert zurückzugeben, wenn Sie es abrufen, und speichert etwas im Inhaltsattribut, wenn Sie es festlegen. Mit anderen Worten, die IDL-Attribute spiegeln im Wesentlichen die Inhaltsattribute wider.
Meistens geben IDL-Attribute ihre Werte so zurück, wie sie wirklich verwendet werden. Zum Beispiel ist der Standard-type
für <input>
-Elemente "text", also wenn Sie input.type="foobar"
setzen, wird das <input>
-Element vom Typ Text sein (in Aussehen und Verhalten), aber der Wert des "type"-Inhaltsattributs wird "foobar" sein. Das type
IDL-Attribut wird jedoch die Zeichenkette "text" zurückgeben.
IDL-Attribute sind nicht immer Zeichenketten; zum Beispiel ist input.maxlength
eine Zahl (ein vorzeichenloser langer Wert). Wenn Sie IDL-Attribute verwenden, lesen oder setzen Sie Werte des gewünschten Typs, also wird input.maxlength
immer eine Zahl zurückgeben, und wenn Sie input.maxlength
setzen, erwartet es eine Zahl. Wenn Sie einen anderen Typ übergeben, wird er automatisch in eine Zahl umgewandelt, wie es die Standard-JavaScript-Regeln für Typkonvertierungen vorsehen.
IDL-Attribute können andere Typen widerspiegeln, wie vorzeichenlose lange Werte, URLs, boolesche Werte usw. Leider gibt es keine klaren Regeln, und wie sich IDL-Attribute in Verbindung mit ihren entsprechenden Inhaltsattributen verhalten, hängt vom Attribut ab. Meistens folgt es den in der Spezifikation festgelegten Regeln, aber manchmal nicht. Die HTML-Spezifikationen versuchen, dies so entwicklerfreundlich wie möglich zu gestalten, aber aus verschiedenen Gründen (meist historisch) verhalten sich einige Attribute merkwürdig (select.size
zum Beispiel) und Sie sollten die Spezifikationen lesen, um zu verstehen, wie sie genau funktionieren.
Siehe auch
- IDL auf Wikipedia
- HTML-Attributreferenz
- Interface Definition Language