日期:2014-05-16  浏览次数:20489 次

<a>标签href中#,javascript:void问题
在开发过程中遇到问题:

1: <a href='#' onclick='fun();return false;'/>触发javascript事件而不改变当前链接。
2: <a href="javascript:void(0)" onclick="return true;">这种方式来建立死链接。

??? 通过参考这篇文章知道在web标准中也是不建议使用2方式javascript:void(0)伪协议也会有bug存在,会使gif动画停止播放。事件触发(调用顺序 onclick>window.onbeforeunload->href),通过设置return false解决问题,而1却没有出现问题,这是因为void运算符在执行之前会调用window.onbeforeunload方法,对于void运算符(void只做运算,返回结果为undefined),所以在调用到href时遇到void运算符的时候,可能就会产生一些bug。

??? 但是使用1的方式href='#' onclick中加上return false,也会存在问题,导致点击链接页面返回顶部,这是由于#号默认锚点为#top,点击后重新定位到top锚点位置,当然可以自己再重新定义一个top锚点,但是这也不能很好解决问题,仍然也存在定位不准。

参考:http://boring.youngpup.net/archived/popups.html
1 楼 robin_leung 2010-10-19  
用javascript:;
2 楼 deng131 2010-10-20  
用这种方法测试下
3 楼 mbn 2010-10-21  
呵呵,研究得比较细致,赞一个,比较通用的做法是1楼的同学说的 href="javascript:;" 用void(0);会在很多浏览器里面出问题。href专用于链接跳转,onclick专用于处理js事件