href小技巧

rou 2012-05-14

使用javascript的时候,通常我们会通过类似:

<ahref="#"onclick="javascript:方法">提交</a>

的方式,通过一个伪链接来调用javascript方法.这种方法有一个问题是:

虽然点击该链接的时候不会跳转页面.但是滚动条会往上滚,解决的办法是返回一个false.

如下所示:

<ahref="#"onclick="方法;returnfalse;">提交</a>

或<ahref="javascript:void(0)"onclick="方法">提交</a>

同时页面链接地址也不会被添加上#

在web标准中也是不建议使用javascript:void(0)的方式因为伪协议也会有bug存在,会使gif动画停止播放。

点击事件触发的时候(调用顺序:onclick->window.onbeforeunload->href),因为void运算符在执行之前会调用window.onbeforeunload方法对于void运算符(void只做运算,返回结果为undefined),所以在调用到href时遇到void运算符的时候,可能就会产生一些bug

但是使用href='#'onclick中加上returnfalse,也会存在问题,导致点击链接页面返回顶部,这是由于#号默认锚点为#top,点击后重新定位到top锚点位置,当然可以自己再重新定义一个top锚点,但是这也不能很好解决问题,仍然也存在定位不准。有些朋友喜欢使用####来替换#(#一般为2到6个,大多都取4个)。无论#几个都是会存在这个bug的,原因同上。

点击链接导致页面返回顶部也可以采用span标签替换a标签来解决,但是还可以不改变标签,只需讲#用#this替换即可解决问题,也可以采用其它锚点

<ahref='#this'onclick='fun();returnfalse;'/>

相关推荐

wcqwcq / 0评论 2015-12-22