最近接手一个项目做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
交口称赞 阅读(4777)
评论(16) 编辑 收藏 所属分类:
J2EE & WEB 、
struts