为什么属性“禁用”但未“启用”

时间:2011-10-10 03:10:41

标签: html

我总是感觉到HTML disabled的{​​{1}}属性,所有这些都在扭曲我的大脑。为什么选择否定的属性名称,<input>更直观?

比较一下:

enabled

1 个答案:

答案 0 :(得分:12)

这背后的根本原因是它是HTML输入字段的后续添加,并且需要保持与现有网页的向后兼容性。

最初定义<input>标记时,其功能非常有限。它没有disabledreadonly属性,也没有我们今天认为理所当然的许多其他属性。

这些都是后来添加的,但是当它们被添加时,许多网站已经在使用<input>字段,因此禁用它的能力必须在不影响不使用它的现有代码的情况下工作。因此,默认状态必须为enabled

它也必须是一个布尔标志,这就是disabled而不是enabled=true的原因。后者将是一个键值对属性。这不是一个好的选择。

请考虑以下事项:

enabled=false
enabled=0
enabled=FALSE
enabled=no
enabled=disabled
enabled=flase
etc...

浏览器必须能够处理大量可能的值。使它成为布尔标志极大地简化了事情。它使规范更容易理解,无论是对于网站开发人员还是浏览器开发人员。

要记住的另一件事是,将此属性添加到HTML的时间正处于所谓的“浏览器大战”的中间。许多功能被添加到竞争的Web浏览器中,匆忙而且没有正式规范的好处,并且添加了许多功能,我们确实可以回顾它们并希望它们略有不同。

我不相信这是其中一个特征:如果你停下来思考它,那么disabled标志就是完全合乎逻辑的。但是,如果浏览器开发人员当时合作多一点,那么它很可能设计得更好。

但无论如何,今天的情况就是我们拥有的。 HTML规范可能正在发展,但现有的功能现在不会改变。