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),您应该阅读规范以准确了解它们的行为方式。

另见