省略 contenteditable 属性的值是否安全(跨浏览器)?

Is it safe (cross-browser) to omit the value of the contenteditable attribute?

根据 W3C 规范...

The contenteditable attribute is an enumerated attribute whose keywords are the empty string, true, and false. The empty string and the true keyword map to the true state.

我找到的所有示例和文档都代表 "empty string",如下所示:

<div contenteditable="">...</div>

我想知道以下是否同样有效(跨浏览器)为了更清晰、更简短的代码:

<div contenteditable>...</div>

它工作得很好 - 至少在当前版本的 Firefox 和 Chrome 上是这样。我只是想知道它是否 有效且可靠的跨浏览器 。我的想法是,它可以与只读、禁用、选定等表单属性相媲美——这些属性在不赋值的情况下通常且可靠地使用。

解决方案:

Marc B 从 W3C 规范中指出以下内容:

Note that empty attribute syntax is exactly equivalent to specifying the empty string as the value for the attribute.

...这基本上证实了布尔值 attributes/properties 的缺失值和空值的可互换性,这意味着上面的两个代码片段都是有效的,并且(应该)在浏览器中得到相同的处理。感谢所有回答的人!

根据 W3C specs:

In the following example, the disabled attribute is given with the empty attribute syntax:

<input disabled>

Note that empty attribute syntax is exactly equivalent to specifying the empty string as the value for the attribute, as in the following example.

<input disabled="">

现在,这就是 W3C 所说的,然后是浏览器读取的内容。您可以确定 Internet Explorer 会 translate/read 作为“argle bargle screw the specs woofle”并做自己的事情,可能将“禁用”视为“do_the_stupidest_possible_thing_repeatedly=true”。

这是来自 Mozilla 的有用 link,应该可以准确回答您的问题。

摘录:

根据 MDN,当 contentEditable 属性 设置为 true 或空字符串时,表示该元素是可编辑的。因为 contentEditable 属性是枚举的,而不是布尔值,如果您省略它是从父元素继承的值。

支持 IE6、Chrome11、Firefox 3.0 (Gecko 1.9)、Opera 10.6 和 Safari 3.2。

根据 WHATWG,省略该值应该导致 inherit,而不是像空字符串那样 true。不同的价值观,我会说这是不安全的。

但是如果你想要清晰的代码,为什么不写true,既然你要问这个问题你连自己的代码都看不懂。而且我必须同时查找“”的作用和属性的缺失值默认值,这不是我所说的清楚。