我们的一个web开发人员使用下面的html作为样式化下拉列表的占位符。
<a href="" class="arrow"></a>
这被认为是锚标签有效吗?
由于没有href值,它在我们的一些链接检查器报告中显示为broken。
我们的一个web开发人员使用下面的html作为样式化下拉列表的占位符。
<a href="" class="arrow"></a>
这被认为是锚标签有效吗?
由于没有href值,它在我们的一些链接检查器报告中显示为broken。
当前回答
虽然这个问题已经被回答了(tl;dr:是的,空的href值是有效的),但现有的答案都没有引用相关的规范。
空字符串不能是URI。然而,href属性不仅将URI作为值,还将URI引用作为值。空字符串可以是URI引用。
HTML 4.01
HTML 4.01使用RFC 2396,在4.2节中提到。同一文档引用(粗体强调):
不包含URI的URI引用是对当前文档的引用。换句话说,文档中的空URI引用被解释为对该文档开头的引用,而仅包含片段标识符的引用则是对该文档已标识的片段的引用。
RFC 2396已被RFC 3986(目前是IETF的URI标准)所淘汰,它本质上说的是一样的。
HTML5
HTML5使用(有效URL可能被空格包围→有效URL) W3C的URL规范,该规范已被终止。应该使用WHATWG的URL标准(参见最后一节)。
HTML 5.1
HTML 5.1使用WHATWG的URL标准(有效URL可能被空格包围→有效URL)(见下一节)。
WHATWG HTML
WHATWG的HTML使用了WHATWG的URL标准中有效URL字符串的定义(有效URL可能被空格环绕),它说它可以是一个带片段的相对URL字符串,它必须至少是一个相对URL字符串,它可以是一个路径相对方案少URL字符串,它是一个路径相对URL字符串,不以方案字符串开头,后面跟着:,它的定义说(粗体强调我的):
路径相对url字符串必须是0个或多个url路径段字符串,彼此用U+002F(/)隔开,并且不能以U+002F(/)开头。
其他回答
当前的HTML5草案还允许完全省略href属性。
如果a元素没有href属性,则该元素表示一个占位符,表示链接可能被放置的位置(如果它是相关的)。
回答你的问题:是的,这是有效的。
虽然这个问题已经被回答了(tl;dr:是的,空的href值是有效的),但现有的答案都没有引用相关的规范。
空字符串不能是URI。然而,href属性不仅将URI作为值,还将URI引用作为值。空字符串可以是URI引用。
HTML 4.01
HTML 4.01使用RFC 2396,在4.2节中提到。同一文档引用(粗体强调):
不包含URI的URI引用是对当前文档的引用。换句话说,文档中的空URI引用被解释为对该文档开头的引用,而仅包含片段标识符的引用则是对该文档已标识的片段的引用。
RFC 2396已被RFC 3986(目前是IETF的URI标准)所淘汰,它本质上说的是一样的。
HTML5
HTML5使用(有效URL可能被空格包围→有效URL) W3C的URL规范,该规范已被终止。应该使用WHATWG的URL标准(参见最后一节)。
HTML 5.1
HTML 5.1使用WHATWG的URL标准(有效URL可能被空格包围→有效URL)(见下一节)。
WHATWG HTML
WHATWG的HTML使用了WHATWG的URL标准中有效URL字符串的定义(有效URL可能被空格环绕),它说它可以是一个带片段的相对URL字符串,它必须至少是一个相对URL字符串,它可以是一个路径相对方案少URL字符串,它是一个路径相对URL字符串,不以方案字符串开头,后面跟着:,它的定义说(粗体强调我的):
路径相对url字符串必须是0个或多个url路径段字符串,彼此用U+002F(/)隔开,并且不能以U+002F(/)开头。
试着用<a href="#" class="arrow">代替。(注意尖锐的#字符)。
提醒一句:
根据我的经验,忽略href属性会导致可访问性问题,因为键盘导航将忽略它,并且永远不会像href存在时那样给予它焦点。手动在tabindex中包含元素是一种解决方法。
它是有效的。
然而,标准的做法是使用href="#",有时也使用href="javascript:;"。