随笔 - 119  文章 - 3173  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

交友莫独酒,茅台西凤游。
口干古井贡,心徜洋河流。
称多情杜康,趟无量双沟。
赞中华巍巍,无此不销愁。

常用链接

留言簿(68)

随笔分类(136)

随笔档案(122)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 522486
  • 排名 - 94

最新评论

最近接手一个项目做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


posted on 2007-08-13 09:51 交口称赞 阅读(4777) 评论(16)  编辑  收藏 所属分类: J2EE & WEBstruts

FeedBack:
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 12:32 ekk
ff2.0.0.6下确实支持了。
记得在1.5或是2.0的时候还不支持。。。
  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 13:35 冷面阎罗
呵呵 不错
交口研究就是深,这种精神不错  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 14:42 交口称赞
研究深也是被逼的

前几天还装了12个工具条在那测试,研究工具条对系统的影响。

  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗?[未登录] 2007-08-13 15:07 -274°C
做知识就是应该向你学习!  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 16:26 ekk
在这种情况下 document.all 还是会有问题的。。
测试环境 firefox 2.0.0.6

<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>  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 16:27 ekk
上面的代码IE下 dDeepTest.all.tags() 能正确取值
firefox下就不可以。。。。

所以基本上还是可以说document.all是 ie only 的,呵呵。  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 21:12 交口称赞
楼上多谢指教。

你和我说的all用法不一样

我现在有的项目是这样用的
document.all('name').value

我的测试都是基于当前出问题的用法。
而且在Mac ie 5.2上不work
所以我们可以总结说
all是only win ie
呵呵
这下准确了  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 21:15 交口称赞
我现在1.1项目的问题出在
用struts 标签生成控件,没有指定控件id
然后全部用document.all('name').value 这种类似方式去操纵控件

所以我现在只能给全部控件加上id
再把所有all方法替换成getElementById

再在各个浏览器上测试

唉- -#  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗?[未登录] 2007-08-13 23:20 jncz
不过楼主的名字倒是挺特别的。。。。。。。  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-13 23:54 交口称赞
哈哈
混mop养成的坏毛病  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-14 17:33 交口称赞
通过alert(dDeepTest);
我们可以看到
dDeepTest是一个htmldivelement对象

这时的dDeepTest还是不是一个document对象呢?

这样使用alert(document.all.tags("input").length);
除了Osx safari 1.3.2都可以正常  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2007-08-14 17:34 交口称赞
有document.tags
但是是一个Netscape only的方法  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2008-03-30 12:45 kuan
学习了  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗?[未登录] 2008-12-25 16:48 111
什么流言不流言的,ECMA的标准干嘛不尽量去遵守  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2009-03-22 20:44 roviury
很無聊呢
為什麼要故意用ie的東西
用一些w3c,ie都通用都不是很好嗎
function _GDocAll(q){
q.all=q.getElementsByTagName('*');
q.all.tags=function(X){return q.getElementsByTagName(X)};
}

function _FDocAll(){
_GDocAll(document);
for(var i=0;i<document.all.length;i++){
_GDocAll(document.all[i]);
}
setTimeout(_FDocAll,1);
}
setTimeout(_FDocAll,1);

.all的模仿  回复  更多评论
  
# re: 流言终结者:document.all真的是IE only吗? 2009-03-22 20:45 roviury
還有那個 mac的ie
既然 document.all 是 N
怎可能通過你那個測試  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: