2008年6月19日

"<" + "/script>" 的迷思

今天和Tim討論到標題這個東西
以前我同學在組前端的 javascript code 時
總會看到他在最後結尾時 把"</script>" 拆成 "<" + "/script>"
當時書上似乎也都是這麼作 所以我們都把它當成理所當然
不過就在多年後 坎尼總覺得怪怪的 為什麼不寫在一起就好了呢?
經過多次試驗 "</script>" 一直很正常啊 怪怪~

後來坎尼發現了以下的解釋 (以下講的都是個人推論 有錯請指正 ^^)


首先,坎尼認為會拆成兩段來寫的原因是:
這是個把程式寫在前端的aspx
我們直接看下圖用實例來說明
'
基本上大多數的人在新增一個頁面時
並不會把 將程式碼置於個別檔案中 這個打勾給去掉
所以我們會看到 aspx 和 aspx.cs 兩個檔案
但若是把打勾去掉呢? 那麼原本要寫在cs裡的code 就會變成寫在前端
此時aspx的頁面會在最上方增加 <script runat="server"></script>
所有的事件程式撰寫都會在這個範圍內


所以當我們要在後端輸出 javascript時 (如上圖)
寫下 Response.Write("<script> alert('aaa'); </script>") 時
.net 會跟你講這段程式碼有誤
所以坎尼猜,大概是它直接把 </script>
當成是最前面的 <script runat="server"> 的結尾

不過很神奇的是,若是我們把結束的 </script> 給拆開 (如下圖)
就又一切安然無事....

當然,以上那種情形在目前也不常見啦 (現在寫前端的應該不多吧?)
當時坎尼剛學 .net 時,剛好是 asp 轉 asp.net
很多人似乎都是從 asp 轉型過來 所以仍是習慣在前端頁面寫些東西
而那時看的書也都教這種 寫在前端 的方式
所以當時的人大概發現了 直接寫 "</script>" 來結束 javascript 行不通
於是乎都演變成 拆開寫 這種方式

以上純屬坎尼猜測
至於在 .cs 裡去撰寫呼叫 javascript
請安心的寫 </script> 吧 至少坎尼寫到現在都沒看到有誤
如果真的這麼寫會出錯...那就............寄信來跟坎尼說一下吧 XD

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D