最近接手一個項目做1.5版,其中一個重要的feature是要全瀏覽器支持,經過測試發現,1.1版在蘋果的safari下面完全不能工作。
導致不能工作的問題很多,其中有一個主要問題是,1.1里面大量用了document.all去操縱控件的值。
頁面控件是用的struts標簽做的,只指定的property,沒有指定styleId。
研究的時候發現,在Aptana? Version: 0.2.7.13425里面,提示document.all是個ie only的方法。
查閱資料,都說document.all是個ie only的方法,是IE4加入的。ok,讓我來測一把。
經過實際瀏覽器測試:
? | IE5、6、7 | Firefox 2.0.0.5 | Netscape 8.1.3 | Opera 9.23 | Win safari 3.0.3 | Osx safari 1.3.2 | Mac ie 5.2 |
document.all | Y | Y | Y | Y | Y | N | N |
document. getElementById | Y | Y | Y | Y | Y | Y | Y |
從上面的結果來看,我們可以得出幾個結論。
1.不是是IE就支持
document.all。mac 下的ie 5.2就不支持。2.不是只有IE才支持
document.all。當前主流瀏覽器的最新版本都已經能很好的支持document.all。
3.頁面控件一定要加id。
4.操縱控件最好用document.getElementById
另外對于struts標簽生成的控件,可以通過增加屬性styleId=''的方式,使生成的控件帶有id屬性。
好了,問題定位了,下面就是要干活了,幾乎所有的jsp都要改。。。。。。。。
體力活啊。- -#
對了。據說下個版本要支持
Opera Mini
Blackberry Browser
估計到時候問題會更多。
5樓的代碼測試結果
<div id="deepTest">
<input type="text" name="name" value="kk">
<input type="text" name="age" value="xx">
</div>
<script type="text/javascript">
var dDeepTest = document.all.deepTest;
alert(dDeepTest.innerHTML);
var ipts = dDeepTest.all.tags("input");
alert(ipts.length);
</script>
? | IE5、6、7 | Firefox 2.0.0.6 | Netscape 8.1.3 | Opera 9.23 | Win safari 3.0.3 | Osx safari 1.3.2 | Mac ie 5.2 |
? | Y | 僅第一alert正常 | 僅第一alert正常 | Y | 僅第一alert正常 | N | Y |
posted on 2007-08-13 09:51
交口稱贊 閱讀(4790)
評論(16) 編輯 收藏 所屬分類:
J2EE & WEB 、
struts