ie6 javascript:void(0);

遇到过几次这种问题,现在总结一下。

代码:

<a onclick="window.location.href=‘http://www.google.com‘" href="javascript:void(0);">google</a>
这段代码在主流的浏览器里面都没问题,但是在IE6下就会出现不能跳转的现象。

经过一翻排查,发现绑定的事件都会执行,是由于DOM本身的冒泡事件所以会最后执行href属性内的javascript:void(0);导致的。

a标签

a标签本来就是用来进行页面跳转的标签,其运行机制是告诉浏览器URL地址并且跳转。当然,我们可以在href属中直接执行javascript。

代码:

<a href="javascript:alert(‘Hello!‘);">Say Hello</a>
Say Hello

这里由于javascript执行了alert函数,但是其返回的是null。所以a标签没有执行任何动作。

javascript:void(0);

void(arg);可以理解为永远返回null的函数,但是其参数不能为空。其参数可以为任意的表达式甚至是函数。

代码:

<a href="javascript:void(name = ‘will‘); alert(‘Hello ‘ + name);">Say Hello</a>
Say Hello

对IE6运行的猜想

IE6会先运行DOM本身绑定的事件,如onclick;如果没有阻止冒泡,则会顺序执行href属性。而void(0);正是不需要执行任何事件,则IE6告诉浏览器不执行任何事件(覆盖之前的动作),并且终止冒泡相当于return false;于是浏览器没有执行任何动作。

这样只要在onclick事件内阻止冒泡事件即可。

经过改进的代码为:

<a onclick="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);

当然前提是你的页面不要有锚点的名字是#的哟~

### 和## 有什么区别?

按href属性的#解释,##应该是去寻找<a name=‘#‘></a>的锚点,###应该是去寻找<a name=‘##‘></a>的锚点,但是name属性应该是以[A-Za-z]字母开头并且具有唯一性的标识。所以这应该仅仅只是一种hack写法,应该没什么区别。以上是我的理解 :)

时间: 2024-07-29 14:11:28

ie6 javascript:void(0);的相关文章

老生常谈:ie6下,a标签href设置javascript:void(0);后绑定的click失效

老生常谈:ie6下,a标签href设置javascript:void(0);后绑定的click事件,如果有form表单提交或跳转等事件,会失效!举例: <a id="id_back" href="javascript:void(0);" title="返回管理">返 回</a> $("#id_back").click(function(){         $("#id_frm").

javascript:;与javascript:void(0)使用介绍

有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法 href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢甚至崩溃. 当然我们一般用三个 href="###",不过看了这篇文章我们以后就可以使用javascript:;(一个冒号一个分号) javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. javascript:;好些,javascript:void(0);据说

【repost】javascript:;与javascript:void(0)使用介绍

有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法 最近看了好几个关于<a>标签和javascript:void(0)的帖子,谨记于此,以资查阅. 注:以下代码未经全面测试,但每一种方法可能会出现的情况都基本做了说明. 在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶端,用户体验不好. 目前有如下几种解决办法: 1

a href=#与 a href=javascript:void(0) 的区别

转载:http://blog.csdn.net/fightplane/article/details/5190037 a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="JavaScript:void(0)" onClick="window.open()"> 点击链接后,页面不动,只打开链接 <a href="#" onclick="javasc

a href=#与 a href=javascript:void(0) 的差别

a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onClick="window.open()"> 点击链接后,页面不动,仅仅打开链接 <a href="#" onclick="javascript:return false;"> 作用同上,不同浏览器会有差异. 点击链接后,不想使页面滚到

a标签中的href:JavaScript:void(0) # 等

参考自:http://segmentfault.com/q/1010000000339082 给<a>标签增加href属性,就意味着以下事情: :link选择器可以选择到它 这个<a>标签可以获得焦点(可以通过tab按键访问到) 在浏览器的默认样式表中,有href属性的<a>标签才有cursor:pointer的效果(尤其是在低版本的IE上). 绑定了onclick事件的<a>标签,尤其是它的作用是ajax请求时,基本上我们就用不上这个标签的默认行为,也连接

javascript:;与javascript:void(0);

href=”#”,包含了一个位置信息,默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢甚至崩溃. javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. javascript:void(0);据说某些情况下有浏览器兼容bug.(此点bug我也不知道什么时候能出现,知道的童鞋请指教). 我感觉这两者之间没有什么差别,都是执行一个空事件.javascript:;甚至少了7个字符. 新浪微博写的都是javascript:void(0); QQ

JavaScript中“javascript:void(0) ”是什么意思

来源: <a href="javascript:test();void(0);">here</a> 此处:Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. void 操作符用法格式如下:1. javascript:void (expression)2. javascript:void expression expression 是一个要计算的 Javascript 标准的表达式.表达式外侧的圆括号是可选的,鉴于规范化,以及养

href=#与 href=javascript:void(0) 的区别

<a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onClick="window.open()"> 点击链接后,页面不动,只打开链接 <a href="#" onclick="javascript:return false;"> 作用同上,不同浏览器会有差异. 点击链接后,不想使页