導(dǎo)致這個問題產(chǎn)生的原因,一般是因為js(一個比較復(fù)雜的js)寫在body里面,在body元素加載完之前調(diào)用出現(xiàn)問題。顯然,解決該問題的方法就是將這一段js放在body元素解析完畢之后。
在實際的項目中,我的這個js是在頭部頁面里面,頭部被多個頁面引用,如果在每個頁面的body元素里面加<body onload="函數(shù)">,可以解決問題,但是這樣做太不符合實際了。畢竟全改的話,到時候布署到外網(wǎng),要更新太多的文件。于是,在網(wǎng)上找了一下,讓這段js最后執(zhí)行的代碼,終于讓我找到了。代碼如下:
1 2 3 4 5 6 7 8 | <scirpt type= "text/javascript" > document.onreadystatechange = function (){ if (document.readyState== "complete" ) { alert( '加載完畢' ); } } </script> |
我把alert("加載完畢")這段改成我要最后執(zhí)行的js代碼,終于IE6不再報這個錯誤,測試IE6、IE7、IE8、谷歌瀏覽器都能通過。
但是火狐不支持這段代碼,因為還得再原先的代碼基礎(chǔ)上加一段只有火狐能運行的代碼,總代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script type= "text/javascript" > /* IE6 7 8,谷歌 */ document.onreadystatechange = function (){ if (document.readyState== "complete" ) { alert( '加載完畢' ); } } /* 火狐 */ if (document.addEventListener) { document.addEventListener( "DOMContentLoaded" , function (){alert( "DOM加載完畢!" )}, null ); } </script> |
PS:我沒用jquery,是因為我們這個項目沒有用過jquery庫,不得不承認,也許用jquery的話,只是一句話的問題,但是加入jquery.js只是為了處理這個的話,未必太大材小用了。