自知其無知
          不懂,慢慢懂。
          posts - 2,comments - 2,trackbacks - 0

          以前就應(yīng)該知道的:
          如果在 html 中寫不知名的標(biāo)簽, html 是會(huì)忽略掉這個(gè)標(biāo)簽的!!
          比如你建一個(gè) html 標(biāo)簽,然后有以下內(nèi)容:



          一個(gè)解釋就是,jsp 是在服務(wù)器端就進(jìn)行編譯解釋,編譯解釋為響應(yīng)的 html 和 class ,然后將 html 發(fā)送到客戶端。
          問題就出來了,如果我利用 js 在客戶端進(jìn)行 innerHTML ,其中 inner 的內(nèi)容含有 jsp 標(biāo)簽,那么頁面會(huì)如何處理?按照上面的解釋執(zhí)行,我們應(yīng)該得不到我們進(jìn)行標(biāo)簽處理的結(jié)果。
          測(cè)試內(nèi)容如下:
            <script type="text/javascript">
               window.onload = function(){
                document.getElementById('div_test').innerHTML = '<c:out value="中國,強(qiáng)大" />';
               }
            </script>
           
           
            <div id="div_test">
                 Hello world
            </div>
           
            <c:out value="你好,世界" />


          你猜, div_test 的內(nèi)容是什么?
          對(duì)了,是 "中國,強(qiáng)大"   - 》 為什么是這個(gè)字符串,jstl 的標(biāo)簽不是在服務(wù)器端處理的嗎?
          恩。因?yàn)閺姆?wù)器發(fā)過來  html 的時(shí)候,已經(jīng)將 js 的jstl標(biāo)簽部分轉(zhuǎn)為了字串了,所以瀏覽器解釋執(zhí)行的時(shí)候就當(dāng)做普通的字符串處理。

          那么,利用 js(js 文件單獨(dú)的通過 <script src /> 導(dǎo)入) 來進(jìn)行 innerHTML 的 jstl 標(biāo)簽?zāi)兀繒?huì)怎樣顯示?
          因?yàn)檫@樣的話,js 不會(huì)被服務(wù)器解釋。

          <script src="../js/test.js"></script>

          <body>
            <div id="div_test">
                 Hello world
            </div>
           
            <c:out value="你好,世界" />

          </body>

          而 test.js 的內(nèi)容為:

          window.onload = function(){ 

           document.getElementById('div_test').innerHTML = '<c:out value="不知不覺" />';
          }



          結(jié)果是,層 div_test 的內(nèi)容變?yōu)榱丝?....
          因?yàn)闉g覽器將不知名的標(biāo)簽以及其屬性不進(jìn)行任何的解釋!,如果標(biāo)簽有內(nèi)容,就僅僅顯示標(biāo)簽的內(nèi)容。
          比如: <abcd value="哈哈" ></abcd>  就會(huì)顯示為空。而 <abcd>哈哈</abcd>  就僅僅顯示標(biāo)簽之間的內(nèi)容 “哈哈”。
          又由于 js 沒有經(jīng)過瀏覽器解析,直接將 jstl 標(biāo)簽 inner 到了 html 中,所以這個(gè)標(biāo)簽就還是方知道了層之間,瀏覽器解析時(shí)不識(shí)別,所以就掛掉了。

          一個(gè)相關(guān)的問題就是: 如果我從服務(wù)器直接獲取數(shù)據(jù)(利用 Ajax),然后用 js  進(jìn)行數(shù)據(jù)處理,我們?nèi)绻?js 中利用 innerHTML = "jstl 標(biāo)簽 處理我們的數(shù)據(jù)"   的話,就掛掉了。。
          如果利用 ajax 獲取數(shù)據(jù),數(shù)據(jù)的格式化,要么在服務(wù)器端格式化好,要么定義專門的  js 來格式化。
          具體情況,具體分析......


          一個(gè)附帶的問題。
           如果我引入的js 文件( <script src="test.js" /> ) 與我的頁面的  js 文件定義的方法或者事件有沖突,是如何執(zhí)行的?
          比如:都定義有 window.onload 事件.,誰會(huì)被采納??
          我還以為都會(huì)執(zhí)行呢,只是后面的方法會(huì)覆蓋前面的方法中相同的處理。
          但是不是的。
          他只選擇處理在后面定義的一個(gè)。!
          也就是說,如果 <script src= '' /> 放在我頁面定義的方法的后面,它就執(zhí)行 <script src='' />中的方法。
          歸結(jié)為一點(diǎn): 后面的覆蓋到了前面的。
          posted on 2008-12-16 17:12 CopyHoo 閱讀(501) 評(píng)論(0)  編輯  收藏 所屬分類: Java Web
          主站蜘蛛池模板: 姜堰市| 宿松县| 屯昌县| 丰县| 宜都市| 富源县| 泌阳县| 绥化市| 怀集县| 恭城| 祁东县| 延川县| 朔州市| 胶州市| 墨竹工卡县| 简阳市| 天气| 东乌珠穆沁旗| 五指山市| 西乌| 大荔县| 吉木乃县| 聂荣县| 习水县| 建瓯市| 隆德县| 洞口县| 长治市| 四子王旗| 两当县| 中方县| 长春市| 民乐县| 政和县| 天峻县| 九江市| 丰都县| 托克逊县| 玉山县| 怀集县| 东方市|