没有值的href属性的有效性

时间:2014-03-26 15:31:56

标签: html href

<a href>some text</a>是否是有效的HTML代码?

这一<a href="#">some text</a>有效。

第一个怎么样?这是一个错字还是允许跳过=""

3 个答案:

答案 0 :(得分:2)

根据HTML序列化中的HTML5 CR,标记<a href>some text</a>有效(相当于<a href="">some text</a>),但不是。

关于HTML序列化的一般HTML5规则(HTML语法)允许empty attribute syntax:“只是属性名称。该值隐含为空字符串。“空字符串是一个有效的URL,引用当前文档。

在XHTML中,<a href>some text</a>无效,甚至格式不正确,因为格式良好的规则(即一般的XML语法规则)要求属性specicification的格式为name =&#34; value&# 34;或名称=&#39;值&#39;,没有捷径。

在早期的HTML规范中,直到并包括HTML 4.01,<a href>some text</a>无效,但基于其他原因。根据形式规则,属性值可能永远不会从属性规范中省略,但如果使用枚举值集声明属性,则可省略名称和等号。因此,如果<a href>some text</a>的属性使用枚举值声明,那么a将是有效的,因此其中一个属性为href(并且只有一个此类属性)。但是没有这样的属性。

答案 1 :(得分:1)

这取决于您的doctype。更重要的是,渲染取决于客户端的浏览器实现。 Chrome,FF,IE&gt;等等,这些浏览器都知道你的意思,并且可以很好地拿起它们。

<强> HTML5

<!DOCTYPE html>

验证员说:

  

有效,但警告:没有看到明确值的属性href。 IE7可以删除该属性。


XHTML1.0严格 XHTML1.0过渡

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

验证员说:

  

无效:&#34; href&#34;不是为任何属性

指定的组的成员

HTML 4.01严格 HTML 4.01宽松

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>

验证员说:

  

无效:&#34; HREF&#34;不是为任何属性

指定的组的成员

答案 2 :(得分:0)

不,它无效。使用:

<span class="pseudo-link">Some text</span>

并在CSS中为类pseudo-link定义样式,使其看起来像普通链接 :hover选择器对于更改字体颜色非常重要,并且当鼠标悬停在文本上方时会对文本加下划线 然后,您可以使用Javascript为此伪链接定义操作。