找出IE6下js跳转失败的元凶

标准

今天做完项目,想测试下浏览器的兼容性。发现一个诡异的问题。代码如下:

<a href="javascript:void(0);" id='gochg' class="x-button x-button-red">接受并去维修 »</a>

js代码:

$('#gochg').click(function(){ if(confirm('确定不用选择物品直接去维修吗?')){ window.location.href='/checkg.html'; } });

IE6下没有任何反应,死活就是没有跳转。诡异啊。

顺便说下js实现页面跳转的几种方式:

第一种: <script language="javascript" type="text/javascript"> window.location.href="login.jsp?backurl="+window.location.href; </script> 
第二种: <script language="javascript"> alert("返回"); window.history.back(-1); </script>
第三种: <script language="javascript"> window.navigate("top.jsp"); </script>
第四种: <script language="JavaScript"> self.location='top.htm'; </script> 
第五种: <script language="javascript"> alert("非法访问!"); top.location='xx.jsp'; </script>

测试了以上的几种方法,还是没有任何反应。也没有报任何错误。坑爹了。。。。

只好慢慢调试了。最后 ,发现将

<a href="javascript:void(0);" id='gochg' class="x-button x-button-red">接受并去维修 »</a>

中的

javascript:void(0);

去掉了,页面终于能跳转了。

经过多次测试,细心解析,发现IE6下a链接的跳转会受到href属性中代码的影响,上述代码的履行过程,貌似是先履行 onclick事件中的代码,并且是在onclick事务的回调函数返回true 的景象下,再履行href属性中的代码,然后才作出跳迁移转变作。而恰是void(0);代码阻拦了浏览器跳转,所以在onclick的代码最后,加上return false; 让onclick回调函数返回false值,以阻拦履行 href属性中的代码,如许就可以让浏览器顺利跳转。

说得简单点就是IE6下的onclick事件中要返回false才不会再执行href属性中的代码!

ok ,IE6下js跳转失败的元凶终于找到了。

原创文章,转载请注明出处!