今天遇見IE6一個location.href的bug,具體情況是這樣的,IE6下,在a標簽中,將href寫成javascript:;javascript:void(0);,并且給這個標簽綁定onclick事件,點擊后,執(zhí)行l(wèi)ocation.href實現(xiàn)頁面跳轉(zhuǎn),例如下面的代碼:
<a href="javascitp:;" onclick="toURL()">點擊跳轉(zhuǎn)</a>
或者
<a href="javascitp:void(0);" onclick="toURL()">點擊跳轉(zhuǎn)</a>
toURL函數(shù)的代碼如下所示:
function toURL(){ location.href = "http://js8.in";}
這樣在非IE6瀏覽器下都可以使用,但是在IE6下就是跳轉(zhuǎn)不了,而且不報錯,在location.href之后的代碼,例如(alert(1);)也是執(zhí)行的。
解決IE6中a標簽中l(wèi)ocation.href失效的方式就是a標簽中的href不用使用javascript:;或javascript:void(0);。具體原因還不清楚,不過我們可以使用href=”#”來代替。
例如下面的代碼在IE6中是正常的:
<a href=http://www.js8.in/"###" onclick="toURL()">正常的跳轉(zhuǎn)</a>
還有一種方式就是,在toURL函數(shù)里面將a標簽的href通過setAttribute設(shè)置為“#”,然后再使用location.href跳轉(zhuǎn)也是可以的。
另外可以通過獲取DOM節(jié)點,然后綁定onclick事件的方式,也是可以解決上面的問題的,例如下面的代碼:
var as = document.getElementsByTagName('a');for (var i=0;i<as.length;i++) { as[i].onclick=function() { window.location.href="http://www.js8.in"; return false; }}
IE6——前端的噩夢還在繼續(xù)。
對于IE6真的不想說什么了,本小站已經(jīng)不在支持IE6了,希望IE6盡快的退出歷史舞臺。