在WHATWG HTML5标准文档中,idl属性是什么意思?

51

在阅读WHATWG的HTML5 - Web开发人员的技术规范时,我看到许多引用,例如:

在IDL属性中反映内容属性

某些IDL属性被定义为反映特定的内容属性。这意味着在获取时,IDL属性返回内容属性的当前值,在设置时,IDL属性将内容属性的值更改为给定值。

以及:

在符合要求的文档中,只有一个body元素。document.body IDL属性为脚本提供了访问文档body元素的便捷方式。

body元素公开了Window对象的一些事件处理程序内容属性。它还镜像了它们的事件处理程序IDL属性。

我的(虽然模糊)理解来自Windows世界。我认为.idl文件用于映射n层分布式应用程序中的远程过程调用。我会认为内容属性是指html元素属性。

在标准中,我没有看到解释这些术语“content attribute”和“IDL attribute”的用法的地方。有人能解释一下这些术语的含义以及这两种属性之间的关系吗?


1
一个IDL属性的例子是ElementinnerHTML。当你给这个属性设置一个值时,它会在解析提供的值后触发DOM的变化。它非常不像一个内容属性。 - HRJ
1个回答

67

IDL(接口定义语言)源自Web IDL规范:

该文档定义了一种接口定义语言,Web IDL,可用于描述旨在在Web浏览器中实现的接口。 Web IDL是一种IDL变体,具有许多功能,可以更容易地指定Web平台中常见脚本对象的行为。还详细说明了使用Web IDL描述的接口与ECMAScript执行环境中的结构相对应。

内容属性是出现在标记中的属性:

<div id="mydiv" class="example"></div>

在上述代码中,idclass是属性。通常情况下,内容属性会有一个对应的IDL属性。
例如,以下JavaScript代码:
document.getElementById('mydiv').className = 'example'

相当于设置 class 属性内容。
在 JavaScript 文本中,IDL 属性通常被称为属性,因为它们作为 DOM 对象的属性暴露给 JavaScript。
虽然通常会有相应的内容属性和 IDL 属性/属性对,但它们不一定可互换。例如,对于 <option> 元素:
- 内容属性 selected 表示选项的初始状态(当用户更改选项时不会更改), - 属性 selected 反映了控件的当前状态。

1
谢谢您提供 Web IDL 的链接。这应该是“可读性”版本! - Sinthia V
那么例如 onclick 和其他的属性呢?我在 Mozilla 邮件列表中读到,这些是 IDL 属性,但它们也出现在标记中...他们将内容属性描述为影响渲染过程的属性。 - Florian Loch
1
selected 内容属性值既可读又可写,就像 <option>defaultSelected IDL 属性/属性一样。 - brianary
非标准的自定义属性怎么办?例如 <div roka="42"> 和在 JavaScript 中 myDiv.roka 不同的值。为什么?这种情况下的标准是什么? - sarkiroka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接