自知其無(wú)知
          不懂,慢慢懂。
          posts - 2,comments - 2,trackbacks - 0

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



          一個(gè)解釋就是,jsp 是在服務(wù)器端就進(jìn)行編譯解釋,編譯解釋為響應(yīng)的 html 和 class ,然后將 html 發(fā)送到客戶端。
          問(wèn)題就出來(lái)了,如果我利用 js 在客戶端進(jìn)行 innerHTML ,其中 inner 的內(nèi)容含有 jsp 標(biāo)簽,那么頁(yè)面會(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="中國(guó),強(qiáng)大" />';
               }
            </script>
           
           
            <div id="div_test">
                 Hello world
            </div>
           
            <c:out value="你好,世界" />


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

          那么,利用 js(js 文件單獨(dú)的通過(guò) <script src /> 導(dǎo)入) 來(lái)進(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="不知不覺(jué)" />';
          }



          結(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 沒(méi)有經(jīng)過(guò)瀏覽器解析,直接將 jstl 標(biāo)簽 inner 到了 html 中,所以這個(gè)標(biāo)簽就還是方知道了層之間,瀏覽器解析時(shí)不識(shí)別,所以就掛掉了。

          一個(gè)相關(guān)的問(wè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ù)器端格式化好,要么定義專門(mén)的  js 來(lái)格式化。
          具體情況,具體分析......


          一個(gè)附帶的問(wèn)題。
           如果我引入的js 文件( <script src="test.js" /> ) 與我的頁(yè)面的  js 文件定義的方法或者事件有沖突,是如何執(zhí)行的?
          比如:都定義有 window.onload 事件.,誰(shuí)會(huì)被采納??
          我還以為都會(huì)執(zhí)行呢,只是后面的方法會(huì)覆蓋前面的方法中相同的處理。
          但是不是的。
          他只選擇處理在后面定義的一個(gè)。!
          也就是說(shuō),如果 <script src= '' /> 放在我頁(yè)面定義的方法的后面,它就執(zhí)行 <script src='' />中的方法。
          歸結(jié)為一點(diǎn): 后面的覆蓋到了前面的。
          posted on 2008-12-16 17:12 CopyHoo 閱讀(502) 評(píng)論(0)  編輯  收藏 所屬分類: Java Web
          主站蜘蛛池模板: 海盐县| 原阳县| 宿松县| 麻阳| 泰安市| 乐业县| 南乐县| 漠河县| 万盛区| 闽清县| 马关县| 永福县| 太保市| 枣阳市| 库车县| 祁门县| 临武县| 永寿县| 泰州市| 莲花县| 浮梁县| 确山县| 志丹县| 永寿县| 南江县| 鹤山市| 咸丰县| 汪清县| 宽甸| 吴堡县| 新郑市| 上饶县| 郎溪县| 正镶白旗| 丰县| 屏山县| 潜江市| 出国| 开平市| 东乡族自治县| 黔东|