html - 为什么属性 "disabled"而不是 "enabled"

标签 html

我总是觉得 disabled HTML 的属性 <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))

最佳答案

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

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

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

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

考虑以下几点:

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

浏览器必须能够处理大量可能的值。使它成为一个 bool 标志可以极大地简化事情。它使网站开发人员和浏览器开发人员更容易理解规范。

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

我认为这不是这些功能之一:disabled如果你停下来想一想,旗帜是完全合乎逻辑的。但是,如果当时浏览器开发人员合作得更多一点,它的设计很有可能会更好。

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

关于html - 为什么属性 "disabled"而不是 "enabled",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708184/

相关文章:

html - 没有得到实际的 Canvas 高度和宽度,并且 fillRect 被模糊了

html - 如何选择子元素直到找到元素

jquery - 格式化 Youtube 描述(带有换行符和超链接)

jquery 小部件 css 覆盖了我自己的 css

javascript - HTML Jquery .toggle 不切换回来

html - 如何使用 HTML5 和 CSS 验证表单

javascript - 如何在 Angular 4 中进行数据属性绑定(bind)?

javascript - 在 PHP 代码中调用 JS 函数

css - 语义 HTML5 结构与 CSS 布局需求

javascript - 单击时获取 href 的顶级主机名