我们的某个Web开发人员使用以下html作为占位符来设置下拉列表的样式。
<a href="" class="arrow"></a>
这被认为是锚标签有效吗?
由于没有href值,它在我们的某些链接检查器报告中显示为已损坏。
答案 0 :(得分:172)
这是有效的。
但是,标准做法是使用href="#"
或有时使用href="javascript:;"
。
答案 1 :(得分:109)
正如其他人所说,这是有效的。
但每种方法都有一些缺点:
href="#"
为浏览器历史记录添加了一个额外的条目(例如,在回扣时会很烦人。)
href=""
重新加载页面
href="javascript:;"
似乎没有任何问题(除了看起来凌乱无意义) - 任何人都知道吗?
答案 2 :(得分:55)
虽然不包含href可能是完全有效的HTML,尤其是onclick处理程序,但有一些事情需要考虑:如果没有设置tabindex值,它将不能用于键盘。此外,使用Internet Explorer的屏幕阅读器软件无法访问,因为IE将通过可访问性界面报告任何没有href属性的锚元素不可聚焦,无论是否已设置tabindex。
因此,以下内容可能完全有效:
<a class="arrow">Link content</a>
明确添加空效果href属性
要好得多<a href="javascript:void(0);" class="arrow">Link content</a>
要获得所有用户的完全支持,如果您使用带有CSS的类来渲染图像,您还应该包含一些文本内容,例如title属性,以提供正在进行的文本描述。
<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>
答案 3 :(得分:36)
虽然这个问题已经得到解答( tl; dr:是的,空的href
值有效),但现有的答案都没有引用相关的规范。
空字符串不能是URI。但是,href
属性不仅将URI作为值,还使用URI引用。空字符串可以是URI引用。
HTML 4.01 uses RFC 2396 ,在4.2. Same-document References部分(大胆强调我的)中说明:
不包含URI的URI引用是对当前文档的引用。换句话说,文档中的空URI引用被解释为对该文档的开头的引用,而仅包含片段标识符的引用是对该文档的已识别片段的引用。 / p>
RFC 2396已被 RFC 3986 (目前为IETF’s URI standard)废弃,essentially says the same。
HTML5 uses(valid URL potentially surrounded by spaces→valid URL) W3C的网址规范,已停止使用。应该使用 WHATWG的URL标准(参见最后一节)。
HTML 5.1 uses(valid URL potentially surrounded by spaces→valid URL) WHATWG的网址标准</ strong>(请参阅下一节)。
WHATWG的HTML uses(valid URL potentially surrounded by spaces)来自 WHATWG的网址标准</ strong>的valid URL string的定义,其中它表示它可以是relative-URL-with-fragment string ,必须至少是relative-URL string,可以是path-relative-scheme-less-URL string,path-relative-URL string不是以:
后面的方案字符串开头,而是{{3}}定义说(大胆强调我的):
路径相对URL字符串必须零或更多URL路径段字符串,由U + 002F(/)彼此分隔,而不是以U + 002F开头(/ )。
答案 4 :(得分:26)
答案 5 :(得分:16)
确实,你可以把它留空(W3验证器不会抱怨)。
将这个想法更进一步:省略=“”。这样做的好处是链接不会被视为当前页面的锚点。
<a href>sth</a>
答案 6 :(得分:9)
虽然W3的验证工具可能不会抱怨空href
属性,但the current HTML5 Working Draft指定:
href
和a
元素上的area
属性必须包含可能由空格包围的有效网址。
有效网址是符合URL Standard的网址。现在URL标准有点令人困惑,但是没有任何地方说明URL可以是空字符串。
...这意味着空字符串不是有效的URL。
然而,HTML5工作草案继续说明:
注意:不需要
href
和a
元素的area
属性;当这些元素没有href
属性时,它们不会创建超链接。
这意味着我们可以简单地省略href
属性:
<a class="arrow"></a>
答案 7 :(得分:8)
提醒:
根据我的经验,省略href
属性会导致可访问性问题,因为键盘导航会忽略它,并且永远不会像href存在时那样给予焦点。手动将元素包含在tabindex中是一种解决方法。
答案 8 :(得分:3)
它有效但是 像UpTheCreek说的那样 “每种方法都有一些缺点”
如果你通过标签调用ajax 像这样离开href =“”将保持页面重新加载 并且永远不会调用ajax代码...
刚才这个想法会很好分享
答案 9 :(得分:2)
尝试改为<a href="#" class="arrow">
。 (注意尖锐的#
字符)。