偶然间发现,<a href="#">a1会跳跃吗?</a>,当页面上有滚动条的时候,点击就会跳到页面最上端,然后才知道原理,是因为,‘#’默认的锚点位置是top。
那可能会问,为什么有问题,,还要去用一个空的a标签呢,下面就是解释(摘录前辈的):
给<a>
标签增加href属性,就意味着以下事情:
- :link选择器可以选择到它
- 这个a标签可以获得焦点(可以通过
tab+’回车‘
按键访问到)
- 在浏览器的默认样式表中,有href属性的
<a>
标签才有cursor:pointer
的效果(尤其是在低版本的IE上)。
绑定了onclick事件的<a>
标签,尤其是它的作用是ajax请求时,基本上我们就用不上这个标签的默认行为,也连接不到的实际页面,一般而言也会在CSS里给予了这个元素的cursor等样式。这时候还要加上href属性,是为了:
- 让
<a>
够响应键盘事件并获得焦点(从而屏幕阅读器能够读出背后的内容,增强可访问性) - 优雅降级,在网络连接很差,还没有加载到CSS的时候,
<a>
依然有手型与正常的link样式。
1.<a href=“javascript:void(0);” >test1</a>
2.<a href=“javascript:;” >test2</a>
3.<a href="####" >test3</a> //一般用2-4个#
其中,1和2不会对地址栏造成影响,而3很明显会对地址栏有影响,最后推荐使用的是2,因为看过很多前辈的博客,“javascript:void(0);”。在某些情况下会有bug,javascript:void(0) 仅仅表示一个死链接。
因此,最后总结得到的结论就是,建议使用2号方案……
在脚本之家看到总结的不错,,继续增加一点内容:
就是。在点击链接后,响应用户自定义的点击事件:
<a href="#" onclick="doSomething();return false;">test4</a>
<a href="#" onclick="alert();event.returnValue=false;">test5</a>