为什么属性"禁用"但未"启用"

Xiè*_*léi 5 html

我总是感觉到disabledHTML 的属性<input>,所有这些都在扭曲我的大脑.为什么选择一个否定的属性名称,是不是enabled更直观?

只是比较:

enabled=advancedUser
disabled=not(advancedUser)

enabled=not(locked)
disabled=locked

enabled=advancedUser and not(locked)
disabled=not(advancedUser) or locked
disabled=not(advancedUser and not(locked))
Run Code Online (Sandbox Code Playgroud)

Spu*_*ley 12

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

<input>最初定义的标签,它的功能是极其有限的.它没有disabledreadonly属性,也没有我们今天认为理所当然的许多其他属性.

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

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

考虑以下:

enabled=false
enabled=0
enabled=FALSE
enabled=no
enabled=disabled
enabled=flase
etc...
Run Code Online (Sandbox Code Playgroud)

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

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

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

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