JavaScript在IE6下超级链接window.location.href不跳转的bug 及 解决方案

今天遇到个很诡异的问题,就是<a href="javascript:void(0);" onclick="window.location.href=url"></a>在IE6下面没反应,不跳转到onclik事件中的“window.location.href”。

当时我们在网上找了篇文章很快就解决了,但是文章中没有说明具体原因在哪里,只是说在“window.location.href”后面加一个"return false",当时马上建了个test.html,试了下确实可以,而且试了之后还发现IE6下是被href="javascript:void(0)"覆盖了,这问题看上去很简单,但是为什么其他浏览器没有被覆盖,但对原因到底在哪里还是一头雾水。

IE6 页面跳转事件,必须返回false 或者 阻止默认事件,才能进行正常的页面跳转

试验如下:

var goUrl = function(url) {
	if (!url) return ;
	window.location.href = url;
}

1、<a href="javascript:;" onclick="javascript:goUrl(‘http://www.baidu.com‘);">跳转1</a>

2、<a href="javascript:void(0);" onclick="javascript:goUrl(‘http://www.baidu.com‘);">跳转2</a>

3、<a href="javascript:void(0);" onclick="javascript:goUrl(‘http://www.baidu.com‘);return false;">跳转3</a>

4、<a href="#" onclick="javascript:goUrl(‘http://www.baidu.com‘);">跳转4</a>

5、<a href="###" onclick="javascript:goUrl(‘http://www.baidu.com‘);">跳转5</a>

其中,3、4、5 在ie6下面都可以跳转。1,2不能跳转。

原因:使用return false 或者 框架(Ext jQuery)自带的禁用事件方法 来屏蔽默认事件。

注意:在jQuery事件中,要用 event.preventDefault(); 来阻止默认事件的:

<a href="javascrpt:;" id="recommendGoodsAdd">添加推荐产品</a>
//
$("#recommendGoodsAdd").click(function(event){
	window.location.href = "http://blog.snsgou.com/";
	event.preventDefault();
}

另外,javascript:void(0);的意思是使整个页面不刷新。void方式不返回任何值,即返回undefined。

时间: 2024-10-15 18:26:43

JavaScript在IE6下超级链接window.location.href不跳转的bug 及 解决方案的相关文章

html中submit和button的区别/ window.location.href 不跳转 的问题

<input type="button">  <input type="submit"> 这两个的区别 是 button 不会自动提交表单数据,只会执行 onclick 里面的事件处理,如果要提交数据,需要加上 document.form1.submit(); 等 submit 会自动提交表单数据,使用它的时候要加上验证 ,放回 验证  return ture ; 或 return false; <input type="su

微信BUG之微信内置的浏览器中window.location.href 不跳转

最近做微信开发遇到这个问题,查了一些文档,总结一下 1.url后面加参数 indow.location.href = url +'?timestamp='+ new Date().getTime()+Math.random(); 2.模拟触发a标签 <a id="alink" href="abc.aspx" style="visibility: hidden;">下一步</a> $("#alink").

window.location.href无法跳转的解决办法

-------------------接收别人做的SSO单点登录项目,无源码,只是点击登出按钮一直不跳转. 原因是: <a href="javascript:;" onclick="logout();">注销</a> 这个标签中需要为onclick方法后加return:false; 修改后: <a href="javascript:;" onclick="logout();return false;&quo

window.location.href和window.location.replace的区别

在页面中逐级进行点击请求以下页面:a.html->b.html->c.html window.location.href 做跳转 window.history.go(-1);window.history.back(); 方法时,会向服务器进行请求,根据服务器记录的请求进行跳转,因此会正确返回对应的页面a.html. window.location.replace 做跳转 window.history.go(-1);window.history.back(); 方法时,不会向服务器进行请求,因此

javascript中window.open()与window.location.href

1.window.location是window对象的属性,而window.open是window对象的方法    window.location是你对当前浏览器窗口的URL地址对象的参考!      window.open是用来打开一个新窗口的函数! 2. 在给按钮.表格.单元格.下拉列表和DIV等做链接时一般都要用Javascript来完成.和做普通链接一样,可能我们需要让链接页面在当前窗口打开,也可能需要在新窗口打开,这时我们就可以使用下面两项之一来完成:     window.open

javascript中window.open()与window.location.href的区别

window.open("index.aspx",'top'); 只是表示打开这个页面,并不是打开并刷新index.aspx window.location.href="index.aspx"; 表示重新定向到新页面,同时刷新打开的这个页面: eg: <tr><td style="width:96%;">进行中项目</td><td><img src="Images/2emorewe.

【JavaScript】获取当前页的URL与window.location.href

利用Javascript获取当前页的URL,这个问题起来好像很复杂,如果第一次去想这个问题,很多人估计又在琢磨到底又是哪个神一般的Javascript函数. 其实不是,Javascript获取当前页的URL的函数就是我们经常用来重定向的window.location.href. 比如如下函数: <script> var url=window.location.href; var loc = url.substring(url.lastIndexOf('/')+1, url.length); a

javaScript使用post方式代替window.location.href

window.location.href可以简单粗暴的实现文件下载,Excel导出等...但是该方式传参数有着太多不安全因素,例如:将一些重要信息暴露给地址栏亦或者是由于参数过长导致无法访问等等. 以下是使用post代替window.location.href的实现,大体思路是将参数封装成一个隐藏的Form,然后form.submit()的方式来提交 /** * @author lwh * @param {} url * @param {} params */ function mypost(u

window.location.href和window.open的几种用法和区别

使用js的同学一定知道js的location.href的作用是什么,但是在js中关于location.href的用法究竟有哪几种,究竟有哪些区别,估计很多人都不知道了. 一.location.href常见的几种形式 目前在开发中经常要用到的几种形式有: 1 2 3 4 5 6 self.location.href;//当前页面打开URL页面 window.location.href;//当前页面打开URL页面 this.location.href;//当前页面打开URL页面 location.h