我们的一位网页开发人员使用以下HTML代码作为下拉列表的样式占位符。
<a href="" class="arrow"></a>
这个锚点标签是否合法?
因为没有 href 值,所以在一些链接检查器报告中会显示为损坏的链接。
我们的一位网页开发人员使用以下HTML代码作为下拉列表的样式占位符。
<a href="" class="arrow"></a>
这个锚点标签是否合法?
因为没有 href 值,所以在一些链接检查器报告中会显示为损坏的链接。
它是有效的。
然而,标准做法是使用 href="#"
或有时候是 href="javascript:;"
。
href="#"
时,焦点会移动到页面顶部,因此我认为使用href="javascript:;"
更好。 - Deckard就像其他人所说的那样,它是有效的。
然而,每种方法都有一些缺点:
href="#"
会在浏览器历史记录中添加一个额外的条目(当使用“后退”按钮时很烦人)。
href=""
会重新加载页面。
href="javascript:;"
似乎没有任何问题(除了看起来凌乱和毫无意义)- 有人知道吗?
href=""
会在新标签页中重新加载页面 - 不知道为什么。我必须明确添加 target="_self"
。 - EML虽然在包含 onclick 处理程序的情况下不包括 href 可能是完全有效的 HTML,但有一些要考虑的事情:如果没有设置 tabindex 值,则它将无法通过键盘聚焦。此外,这将对使用 Internet Explorer 的屏幕阅读器软件不可访问,因为 IE 将通过辅助功能接口报告任何没有 href 属性的锚元素都无法聚焦,无论是否已设置 tabindex。
因此,尽管以下内容可能完全有效:
<a class="arrow">Link content</a>
最好明确地添加一个空效果的 href 属性。
<a href="javascript:void(0);" class="arrow">Link content</a>
为了完全支持所有用户,如果您正在使用CSS对图像进行渲染,则还应包括一些文本内容,例如标题属性,以提供关于所发生情况的文本说明。
<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>
href
会影响辅助功能接口。 - Daniel Sokolowskihref
值设置为相对/绝对路径以外的任何值都会导致屏幕阅读器问题。避免使用井号/数字符号作为解决此问题的方法,因为它并不是为此而设计的。屏幕阅读器可能(目前VoiceOver确实如此)宣布您的链接为片段标识符(链接到当前页面上的某个地方),也符合标准。请参见https://www.w3.org/2001/tag/2011/01/HashInURI-20110115#NakedHash - Michel Hébertif
语句将不会起作用,这只是对HTML元素的不正确使用 - 这不是屏幕阅读器的问题,而是由开发不正确的HTML的人的实现问题。 - undefinedhref
值是有效的),但是现有的答案都没有涉及相关规范。空字符串不能成为URI。然而,href
属性不仅可以取URI作为值,还可以取URI引用。一个空字符串可以是URI引用。
HTML 4.01 使用 RFC 2396,其中在4.2. 同一文档引用部分中指出(加粗为本人强调):
一个不包含URI的URI引用是对当前文档的引用。 换句话说,文档内的空URI引用被解释为对该文档的起始处的引用,而只包含片段标识符的引用则是对该文档中被标识的片段的引用。
RFC 2396已被RFC 3986取代(目前是IETF的URI标准),其基本上表达了相同的意思。
HTML5 使用({{link4:可能由空格包围的有效URL}} → {{link5:有效的URL}})W3C的URL规范,该规范已经停止使用。应改用WHATWG的URL标准(请参见最后一节)。
HTML 5.1使用了WHATWG的URL标准(参见下一节),其中uses(可能被空格包围的有效URL → 有效URL)。
WHATWG的HTML 使用 (可能被空格包围的有效URL) 定义了有效URL字符串,该定义来自WHATWG的URL标准,其中它可以是一个带片段的相对URL字符串,它至少必须是一个相对URL字符串,它可以是一个不带方案的路径相对URL字符串,它是一个不以方案字符串和:
开头的路径相对URL字符串,其定义如下(粗体强调我的):
实际上,您可以将其留空(W3验证器不会抱怨)。
更进一步的想法是:省略 =""。这样做的好处是,该链接不会被视为当前页面的锚点。
<a href>sth</a>
<a href></a>
→ 未看到属性href的显式值。该属性可能会被IE7删除。 - c24whref
属性,但是当前的HTML5工作草案指定:
有效的URL是符合URL标准的URL。现在,URL标准有点令人困惑,但它没有说明URL可以是一个空字符串。
a
和area
元素上的href
属性必须具有有效的URL值,可能被空格包围。
这意味着我们可以完全省略注意:
a
和area
元素上的href
属性不是必需的;当这些元素没有href
属性时,它们不会创建超链接。
href
属性:<a class="arrow"></a>
<a class="arrow" role="button" tab-index="0"></a>
href
会使其不成为超链接,这将使键盘用户无法访问 onclick
功能。 - aij注意:
根据我的经验,省略 href
属性会导致无法访问,因为键盘导航会忽略它,并且不像存在 href 时那样将其聚焦。手动将您的元素包含在 tabindex 中是解决此问题的一种方法。
这是有效的,但正如UpTheCreek所说,“每种方法都有一些缺点”。
如果您通过标签调用ajax, 将href =“”保留为此将使页面重新加载, ajax代码将永远不会被调用...
我刚想到这个想法,很好分享。
<a href="#" class="arrow">
代替(请注意尖括号符号#
)。