流言终结者:document.all真的是IE only吗?

流言终结者:document.all真的是IE only吗?
最近接手一个项目做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,让我来测一把。

经过实际浏览器测试:

 

IE567

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>

 

IE567

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


你可能感兴趣的:(流言终结者:document.all真的是IE only吗?)