<a>标签和javascript:void(0)

http://yslove.net/2011/02/ie6-javascriptvoid0/‘
遇到过几次这种问题,现在总结一下。
代码:
<a οnclick="window.location.href='http://www.google.com'" href="javascript:void(0);">google</a>
<a href="javascript:alert('Hello!');">Say Hello</a>
<a href="javascript:void(name = 'will'); alert('Hello ' + name);">Say Hello</a>
<a οnclick="window.location.href='http://www.google.com' return false;" href="javascript:void(0);">
google</a>
这段代码在主流的浏览器里面都没问题,但是在IE6下就会出现不能跳转的现象。
经过一翻排查,发现绑定的事件都会执行,是由于DOM本身的冒泡事件所以会最后执行href属性内的javascript:void
(0);导致 的。
a标签 a标签本来就是用来进行页面跳转的标签,其运行机制是告诉浏览器URL地址并且跳转。当然,我们可以在href属中直
接执行javascript。
代码:
Say Hello 这里由于javascript执行了alert函数,但是其返回的是null。所以a标签没有执行任何动作。
javascript:void(0); void(arg);可以理解为永远返回null的函数,但是其参数不能为空。其参数可以为任意的表达式甚至是函数。
代码:
Say Hello 对IE6运行的猜想 IE6会先运行DOM本身绑定的事件,如onclick;如果没有阻止冒泡,则会顺序执行href属性。而void(0);正是不需要
执行任何事 件,则IE6告诉浏览器不执行任何事件(覆盖之前的动作),并且终止冒泡相当于return false;于是
浏览器没有执行任何动作。
这样只要在onclick事件内阻止冒泡事件即可。
经过改进的代码为:
<a οnclick="javascript:window.location.href='http://www.google.com'; return false;" 
href="javascript:void(0);">google</a>
这样在IE6下就可以正常运行了。
其他方法 当然可以不使用javascript:void(0);而改使用#也可以避免,href属性内的#本来的意思就是锚点#name所以当不指定任何锚 时自然会到页面顶端并在URL后加入Hash symbol。
这里对于锚还有一个比较特殊的用法
当href属性的值是锚点时,但是又找不到该锚点,则相当于返回null,所以可以使用##来代替javascript:void(0);
当然前提是你的页面不要有锚点的名字是#的哟~
 
转自  https://www.cnblogs.com/pansly/archive/2011/11/29/2267812.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值