是否可以使用不包含href
属性的锚标记,而是使用JavaScript单击事件处理程序?所以我会完全省略href
,甚至没有空(href=""
)。
答案 0 :(得分:199)
在HTML5中,使用不带a
属性的href
元素是有效的。它被认为是“占位符超链接”。
示例:
<a>previous</a>
在w3c锚标记参考页面上查找“占位符超链接”:https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element。
这里也提到了维基: https://www.w3.org/wiki/Elements/a
占位符链接适用于您想要使用锚元素但不能在任何位置导航的情况。这对于在导航菜单或面包屑路径中标记当前页面非常方便。 (旧方法可能是使用span标记或带有名为“active”或“current”的类的锚标记来设置它的样式,使用JavaScript来取消导航。)
如果您希望在运行时通过JavaScript动态设置链接的目标,则占位符链接也很有用。您只需设置href属性的值,锚标记就可以点击。
另见:
答案 1 :(得分:34)
没关系,但同时会导致某些浏览器变慢。
http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/
我的建议是使用&lt; a href =“#”&gt;&lt; / a&gt;
如果您正在使用JQuery,请记住也使用:
.click(function(event){
event.preventDefault();
// Click code here...
});
答案 2 :(得分:24)
简短回答:不。
答案很长:
首先,如果没有href属性,它将不是链接。如果它不是链接,则它不会是键盘(或呼吸开关,或其他各种非基于指针的输入设备)可访问(除非您使用tabindex
的HTML 5功能,这些功能并非普遍支持)。控件没有键盘访问是非常罕见的。
二。你应该有一个替代方案,当JavaScript没有运行时(因为它从服务器加载缓慢,互联网连接被丢弃(例如移动火车上的移动信号),JS被关闭等等)。
使用unobtrusive JS.答案 3 :(得分:16)
如果必须使用href来实现向后兼容性,也可以使用
<a href="javascript:void(0)">link</a>
而不是#,如果您不想使用属性
答案 4 :(得分:12)
没有href属性可以使用标签。与此处的许多答案相反,实际上有标准原因在没有href时创建锚点。在语义上,“a”表示锚或链接。如果你将它用于那个意思之后的任何东西,那么你没事。
没有href的标签的一个标准用途是创建命名链接。这允许您使用名称= blah的锚点,稍后您可以使用href =#blah创建锚点以链接到当前页面的命名部分。但是,这已被弃用,因为您也可以以相同的方式使用ID。例如,您可以使用带有id = header的标头标记,稍后您可以使用指向href =#header的锚点。
但是,我的观点是不建议使用name属性。只提供一个不需要href的用例,从而推断出为什么不需要它。
答案 5 :(得分:8)
从可访问性角度<a>
没有href是不可标记的,所有链接都应该是可以标记的,所以添加一个tabindex =&#39; 0&#34;如果你没有href。
答案 6 :(得分:7)
使用多级菜单时,没有“href”的<a>
标签可以很方便,您需要扩展下一级别,但不希望该菜单标签成为活动链接。我从来没有遇到任何问题。
答案 7 :(得分:0)
在某些浏览器中,如果您没有提供href标记,则会遇到问题。我建议你写一下这样的代码:
<a href="#" onclick="yourcode();return false;">Link</a>
你可以用自己的函数或逻辑替换你的code(),但要记得添加return false;最后的陈述。
答案 8 :(得分:-1)
我能够做到这一点:
<a id="dumb-button" href="#" onclick="return false;">Link</a>
它忽略了点击。然后我使用jQuery来捕捉&#34;哑巴按钮&#34;单击并触发我的代码(隐藏一些div /显示div)。