【问题标题】:For which html5 attributes is the "empty attribute syntax" allowed?哪些 html5 属性允许“空属性语法”?
【发布时间】:2016-01-02 04:05:31
【问题描述】:

http://www.w3.org/TR/html-markup/syntax.html#syntax-attr-empty

空属性语法

可以通过仅提供属性名称来指定某些属性,没有值 [... which] 完全等同于将空字符串指定为属性的值。

IIRC,布尔属性经常使用这个。但是,“某些属性”指的是什么? 在哪些属性、哪些元素上允许使用这种语法? 或者:哪些地方不允许?

我在任何地方都找不到完整的清单。

【问题讨论】:

  • 显然,我引用的w3.org/TR/html-markup 不是 HTML5。 hrmpf.
  • 嗯,这将是某种参考,与您正在寻找的列表不同。

标签: html syntax attributes


【解决方案1】:

空属性语法只是具有名称和空字符串值的属性的简写,它本身并不意味着任何特殊。所以,除了布尔属性,任何允许空值的属性,包括class,都可以用空属性语法来指定,而任何不允许空值的属性,比如idtype,都不能用空属性语法指定。

您可以通过使用Validator.nu比较以下sn-ps的验证结果来确认这一点。

以下两个 sn-ps 都应该验证:

<!DOCTYPE html><title>Test</title>
<body class>
<!DOCTYPE html><title>Test</title>
<body class="">

并且以下两个 sn-ps 都应该产生相同的验证错误:

<!DOCTYPE html><title>Test</title>
<body id>
<!DOCTYPE html><title>Test</title>
<body id="">

错误:元素 body 上属性 id 的值错误:ID 不能是空字符串。

【讨论】:

  • 嗯。那么为什么规范会明确区分“…或""(空字符串)或empty”呢?
  • @Bergi:我不确定。我现在通常忽略 /TR/html-markup,因为它已被 HTMLWG 放弃。 (无论出于何种原因,他们都没有在每一页上都说明甚至表明这一点,只是landing page。)
  • 哦,天哪,谷歌似乎不知道这一点,但还是把它推荐给了我。当我查看w3.org/TR/html5/syntax.html#attributes-0 的等效部分时 - 哦,真奇怪! - 短语“Certain attributes ...”不再存在。谢谢!
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多