我总是感觉到HTML disabled
的{{1}}属性,所有这些都在扭曲我的大脑。为什么选择否定的属性名称,<input>
更直观?
比较一下:
enabled
答案 0 :(得分:12)
这背后的根本原因是它是HTML输入字段的后续添加,并且需要保持与现有网页的向后兼容性。
最初定义<input>
标记时,其功能非常有限。它没有disabled
或readonly
属性,也没有我们今天认为理所当然的许多其他属性。
这些都是后来添加的,但是当它们被添加时,许多网站已经在使用<input>
字段,因此禁用它的能力必须在不影响不使用它的现有代码的情况下工作。因此,默认状态必须为enabled
。
它也必须是一个布尔标志,这就是disabled
而不是enabled=true
的原因。后者将是一个键值对属性。这不是一个好的选择。
请考虑以下事项:
enabled=false
enabled=0
enabled=FALSE
enabled=no
enabled=disabled
enabled=flase
etc...
浏览器必须能够处理大量可能的值。使它成为布尔标志极大地简化了事情。它使规范更容易理解,无论是对于网站开发人员还是浏览器开发人员。
要记住的另一件事是,将此属性添加到HTML的时间正处于所谓的“浏览器大战”的中间。许多功能被添加到竞争的Web浏览器中,匆忙而且没有正式规范的好处,并且添加了许多功能,我们确实可以回顾它们并希望它们略有不同。
我不相信这是其中一个特征:如果你停下来思考它,那么disabled
标志就是完全合乎逻辑的。但是,如果浏览器开发人员当时合作多一点,那么它很可能设计得更好。
但无论如何,今天的情况就是我们拥有的。 HTML规范可能正在发展,但现有的功能现在不会改变。