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

时间:2015-01-22 18:48:34

标签: html5 contenteditable

根据W3C规范...

  

contenteditable 属性是一个枚举属性,其关键字为空字符串,true和false。空字符串和true关键字映射到true状态。

我发现的所有示例和文档都代表了#34;空字符串"如下:

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

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

<div contenteditable>...</div>

工作正常 - 至少在当前版本的Firefox和Chrome上。我只是想知道它是否是有效且可靠的跨浏览器。我的想法是它可以与readonly,disabled,selected等表单属性相媲美 - 这些属性通常可靠地使用而不分配值。

SOLUTION:

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

  

请注意,空属性语法完全等同于将空字符串指定为属性的值。

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

3 个答案:

答案 0 :(得分:1)

根据W3C specs

  

在以下示例中,disabled属性以空属性语法给出:

     

<input disabled>

     

请注意,空属性语法完全等同于将空字符串指定为属性的值,如以下示例所示。

     

<input disabled="">

现在,这就是W3C所说的内容,然后是浏览器阅读的内容。您可以确定Internet Explorer将翻译/读取它作为&#34; argle bargle screw the specs woofle&#34;并做自己的事情,可能是治疗&#34;残疾&#34; as&#34; do_the_stupidest_possible_thing_repeatedly = true&#34;。

答案 1 :(得分:1)

根据WHATWG遗漏的值应该导致inherit,而不是空字符串true。作为不同的价值观,我会说它不安全。

但是如果你想要清晰的代码,为什么不写true,因为你需要提出这个问题,你甚至不能阅读自己的代码。我不得不同时查看&#34;&#34;和属性的缺失值默认值,这不是我所说的清楚。

答案 2 :(得分:0)

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

提取:

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

支持IE6,Chrome 11,Firefox 3.0(Gecko 1.9),Opera 10.6和Safari 3.2。