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

          交友莫獨酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526664
          • 排名 - 92

          最新評論

          最近接手一個項目做1.5版,其中一個重要的feature是要全瀏覽器支持,經(jīng)過測試發(fā)現(xiàn),1.1版在蘋果的safari下面完全不能工作。

          導致不能工作的問題很多,其中有一個主要問題是,1.1里面大量用了document.all去操縱控件的值。
          頁面控件是用的struts標簽做的,只指定的property,沒有指定styleId。

          研究的時候發(fā)現(xiàn),在Aptana? Version: 0.2.7.13425里面,提示document.all是個ie only的方法。
          查閱資料,都說document.all是個ie only的方法,是IE4加入的。ok,讓我來測一把。

          經(jīng)過實際瀏覽器測試:

          ?

          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



          從上面的結(jié)果來看,我們可以得出幾個結(jié)論。

          1.不是是IE就支持document.all。mac 下的ie 5.2就不支持。
          2.不是只有IE才支持document.all。當前主流瀏覽器的最新版本都已經(jīng)能很好的支持document.all。
          3.頁面控件一定要加id。
          4.操縱控件最好用document.getElementById

          另外對于struts標簽生成的控件,可以通過增加屬性styleId=''的方式,使生成的控件帶有id屬性。

          好了,問題定位了,下面就是要干活了,幾乎所有的jsp都要改。。。。。。。。
          體力活啊。- -#

          對了。據(jù)說下個版本要支持

          Opera Mini

          Blackberry Browser
          估計到時候問題會更多。


          5樓的代碼測試結(jié)果
          <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 交口稱贊 閱讀(4796) 評論(16)  編輯  收藏 所屬分類: J2EE & WEBstruts

          FeedBack:
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 12:32 ekk
          ff2.0.0.6下確實支持了。
          記得在1.5或是2.0的時候還不支持。。。
            回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 13:35 冷面閻羅
          呵呵 不錯
          交口研究就是深,這種精神不錯  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 14:42 交口稱贊
          研究深也是被逼的

          前幾天還裝了12個工具條在那測試,研究工具條對系統(tǒng)的影響。

            回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎?[未登錄] 2007-08-13 15:07 -274°C
          做知識就是應(yīng)該向你學習!  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 16:26 ekk
          在這種情況下 document.all 還是會有問題的。。
          測試環(huán)境 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: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 16:27 ekk
          上面的代碼IE下 dDeepTest.all.tags() 能正確取值
          firefox下就不可以。。。。

          所以基本上還是可以說document.all是 ie only 的,呵呵。  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 21:12 交口稱贊
          樓上多謝指教。

          你和我說的all用法不一樣

          我現(xiàn)在有的項目是這樣用的
          document.all('name').value

          我的測試都是基于當前出問題的用法。
          而且在Mac ie 5.2上不work
          所以我們可以總結(jié)說
          all是only win ie
          呵呵
          這下準確了  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 21:15 交口稱贊
          我現(xiàn)在1.1項目的問題出在
          用struts 標簽生成控件,沒有指定控件id
          然后全部用document.all('name').value 這種類似方式去操縱控件

          所以我現(xiàn)在只能給全部控件加上id
          再把所有all方法替換成getElementById

          再在各個瀏覽器上測試

          唉- -#  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎?[未登錄] 2007-08-13 23:20 jncz
          不過樓主的名字倒是挺特別的。。。。。。。  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-13 23:54 交口稱贊
          哈哈
          混mop養(yǎng)成的壞毛病  回復  更多評論
            
          # re: 流言終結(jié)者: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: 流言終結(jié)者:document.all真的是IE only嗎? 2007-08-14 17:34 交口稱贊
          有document.tags
          但是是一個Netscape only的方法  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎? 2008-03-30 12:45 kuan
          學習了  回復  更多評論
            
          # re: 流言終結(jié)者:document.all真的是IE only嗎?[未登錄] 2008-12-25 16:48 111
          什么流言不流言的,ECMA的標準干嘛不盡量去遵守  回復  更多評論
            
          # re: 流言終結(jié)者: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: 流言終結(jié)者:document.all真的是IE only嗎? 2009-03-22 20:45 roviury
          還有那個 mac的ie
          既然 document.all 是 N
          怎可能通過你那個測試  回復  更多評論
            
          主站蜘蛛池模板: 鹤壁市| 团风县| 普安县| 玉门市| 仁布县| 南京市| 宜州市| 绥中县| 湖口县| 曲靖市| 黎平县| 彭水| 专栏| 巴林左旗| 江口县| 邛崃市| 鄯善县| 民和| 乌兰察布市| 汉川市| 慈溪市| 达拉特旗| 鄯善县| 三穗县| 汶上县| 滦平县| 曲水县| 呼玛县| 万全县| 竹山县| 奈曼旗| 巩义市| 开远市| 云霄县| 从江县| 民勤县| 金平| 鄂托克前旗| 南丰县| 营山县| 酒泉市|