emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks
          http://developer.mozilla.org/en/docs/Using_XML_Data_Islands_in_Mozilla

          這篇文章的名字就叫做《Using XML Data Islands in Mozilla》,曾經(jīng)讓我很長的一段時(shí)間里面以為Mozilla(以及firefox)是支持xml數(shù)據(jù)島的,只是支持的方式有所不同。今天再次重讀的時(shí)候才突然注意到,其實(shí)第一段已經(jīng)講明白了,這只是個(gè)mimic

          One handy feature of Internet Explorer is the ability to use data islands to link data to html controls on a page. This feature is not readily built into Mozilla, but one can easily mimic this behaviour to build cross-browser web applications.

          (emu譯)IE的一個(gè)很好用的特性是可以用把數(shù)據(jù)島把數(shù)據(jù)和html連接起來(自動(dòng)展現(xiàn)數(shù)據(jù))。Mozilla還沒有準(zhǔn)備為這個(gè)特性提供內(nèi)建的支持,但是我們可以輕易的模仿IE這個(gè)特性來構(gòu)建跨瀏覽器的網(wǎng)絡(luò)應(yīng)用。


          假的就是假的,所以有些特性是模仿不出來的,你可以用nodeValue來代替Text屬性,可以用innerHTML來代替xml屬性,但是你怎么處理這個(gè)數(shù)據(jù)呢: <![CDATA[ abc ]]>  。html沒有提供CDATA這樣的xml支持。

          還好Mozilla提供了另一種解決方案 DOMPaser 。我們可以通過這樣的方式來提供對頁面內(nèi)xml代碼的一致性的解析和使用:

          function parseXML(st){
              
          if(isIE){
                  
          var result = new ActiveXObject("microsoft.XMLDOM");
                  result.loadXML(st);
              }
          else{
                  
          var parser = new DOMParser();
                          
          var result = parser.parseFromString(st, "text/xml");
            }
              
          return result;
          }

          對節(jié)點(diǎn)的一致性操作請參考 http://www.aygfsteel.com/emu/articles/32699.html
          posted on 2006-03-06 20:44 emu 閱讀(3749) 評論(10)  編輯  收藏

          評論

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2006-04-11 17:41 hunter
          微軟本身對數(shù)據(jù)島也只是是臨時(shí)支持的,在msxml2里面有一個(gè)臨時(shí)解決方案
          它的文檔里面說這個(gè)方案未來是可能會(huì)被廢除的
          所以是一個(gè)不穩(wěn)定、長遠(yuǎn)的方案  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2006-04-12 10:24 emu
          從IE5到IE7,xml數(shù)據(jù)島應(yīng)該馬上就10歲了(看來肯定能活過10歲),firefox才幾歲,netscape才風(fēng)光了幾年,,10年時(shí)間應(yīng)該稱得上很穩(wěn)定很長久了吧  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2006-10-24 12:50 Lirf
          看來firefox還是太年青了啊...呵呵  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-09 22:14 hobo
          html沒有提供CDATA這樣的xml支持。
          ------------------
          可以用xmp標(biāo)簽吧.  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-10 00:07 emu
          不能吧。沒有看出來xmp有任何可以比div更好的代替xml數(shù)據(jù)島的潛力。  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-10 23:26 Hobo
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
          <head>
          <title>flashloader</title>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
          </head>
          <body>
          <xmp id="xmp">
          <table>
          <tr>
          <td>
          <![CDATA[
          <script>
          String.prototype.trim = function()
          {
          [code];
          };
          </script>
          ]]>
          </td>
          </tr>
          </table>
          </xmp>
          <div id="div">
          <table>
          <tr>
          <td>
          <![CDATA[
          <script>
          String.prototype.trim = function()
          {
          [code];
          };
          </script>
          ]]>
          </td>
          </tr>
          </table>
          </div>
          <script type="text/javascript">
          /*<![CDATA[*/
          var getXML = function(sXML)
          {
          try
          {
          var _xmlDom = new ActiveXObject("Microsoft.XmlDom");
          _xmlDom.loadXML(sXML);
          }
          catch (e)
          {
          var _xmlDom = (new DOMParser()).parseFromString(sXML, "text/xml");
          }

          return _xmlDom;
          };

          alert(getXML(document.getElementById("xmp").innerHTML).xml);
          alert(getXML(document.getElementById("div").innerHTML).xml);
          /*]]>*/
          </script>
          </body>
          </html>
            回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-10 23:30 Hobo
          if (!!document.all)
          {
          alert(getXML(document.getElementById("xmp").innerHTML).xml);
          alert(getXML(document.getElementById("div").innerHTML).xml);
          }
          else
          {
          alert((new XMLSerializer).serializeToString(getXML(document.getElementById("xmp").innerHTML)));
          alert((new XMLSerializer).serializeToString(getXML(document.getElementById("div").innerHTML)));
          }  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-11 09:21 emu
          支持CDATA的意思不是把CDATA打印出來,而是不把CDATA打印出來。

          function parseXML(st){
          if(!!document.all){
          var result = new ActiveXObject("microsoft.XMLDOM");
          result.loadXML(st);
          }else{
          var parser = new DOMParser();
          var result = parser.parseFromString(st, "text/xml");
          }
          return result;
          }
          var x=parseXML("<data><![CDATA[ <<<abc>>> ]]></data>")
          alert(x.getElementsByTagName("data")[0][(!!document.all)?"text":"textContent"])

          還是不明白CDATA的作用?試試把CDATA去掉會(huì)如何?
          x=parseXML("<data> <<<abc>>> </data>")
          alert(x.getElementsByTagName("data")[0][(!!document.all)?"text":"textContent"])
            回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-11 10:13 hobo
          <xmp id="xmp"><data><![CDATA[ <<<abc>>> ]]></data></xmp>
          <div id="div"><data><![CDATA[ <<<abc>>> ]]></data></div>

          <script type="text/javascript">
          /*<![CDATA[*/
          alert(document.getElementById("xmp").innerHTML);
          alert(document.getElementById("div").innerHTML);
          /*]]>*/
          </script>

          xmp innerHTML會(huì)原樣輸出,而div不能.  回復(fù)  更多評論
            

          # re: 原來Firefox還是不支持xml數(shù)據(jù)島 2007-01-11 14:30 emu
          拜托,問題不在于是否原樣輸出。而是xmp和div都沒有辦法解析出來CDATA的意義,把CDATA當(dāng)成節(jié)點(diǎn)值輸出出來了。麻煩再看一下我上午的代碼。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 鄂托克旗| 武川县| 南部县| 普宁市| 梁河县| 齐齐哈尔市| 贵溪市| 凤冈县| 会理县| 镇坪县| 邻水| 布尔津县| 金华市| 廉江市| 揭东县| 明光市| 磴口县| 安泽县| 阳曲县| 博湖县| 南部县| 黑龙江省| 长子县| 从江县| 额尔古纳市| 汉沽区| 永宁县| 资兴市| 余姚市| 达日县| 长乐市| 正安县| 桃园县| 兴城市| 平度市| 陆川县| 安顺市| 简阳市| 改则县| 宁陕县| 安西县|