IDL

IDL介面描述語言)是一種通用語言,用於指定獨立於任何特定程式語言的物件介面。

內容屬性與 IDL 屬性

在 HTML 中,大多數屬性都有兩個方面:內容屬性IDL 屬性

內容屬性是您從內容(HTML 程式碼)中設定的屬性,您可以透過 element.setAttribute()element.getAttribute() 來設定或獲取它。內容屬性始終是字串,即使預期值應為整數也是如此。例如,要使用內容屬性將 <input> 元素的 maxlength 設定為 42,您必須在該元素上呼叫 setAttribute("maxlength", "42")

IDL 屬性也稱為 JavaScript 屬性。這些是您可以使用 JavaScript 屬性(如 element.foo)讀取或設定的屬性。IDL 屬性在獲取時總是會使用(但可能會轉換)底層內容屬性來返回值,並在設定時將某些內容儲存到內容屬性中。換句話說,IDL 屬性本質上反映了內容屬性。

大多數情況下,IDL 屬性將按其實際使用方式返回值。例如,<input> 元素的預設 type 是“text”,因此如果您設定 input.type="foobar"<input> 元素將是文字型別(在外觀和行為上),但“type”內容屬性的值將是“foobar”。但是,type IDL 屬性將返回字串“text”。

IDL 屬性不總是字串;例如,input.maxlength 是一個數字(有符號長整型)。使用 IDL 屬性時,您讀取或設定所需型別的值,因此 input.maxlength 總是返回一個數字,當您設定 input.maxlength 時,它需要一個數字。如果您傳遞另一種型別,它將根據 JavaScript 標準的型別轉換規則自動轉換為數字。

IDL 屬性可以反映其他型別,例如無符號長整型、URL、布林值等。不幸的是,沒有明確的規則,IDL 屬性與其相應內容屬性的互動方式取決於屬性。大多數情況下,它會遵循規範中規定的規則,但有時不遵循。HTML 規範試圖使其儘可能對開發者友好,但由於各種原因(主要是歷史原因),某些屬性行為異常(例如 select.size),您應該閱讀規範以準確瞭解它們的行為方式。

另見