星期三, 二月 28, 2007
以為用了 dp.SyntaxHighlighter 就可以放心貼程式碼....
之前在 ingramchen 那看到 dp.SyntaxHighlighter 就很想裝,現在終於裝了....
以為可以放心用力貼程式碼,結果要重新編輯貼了程式碼的文章就出問題,LifeType 的編輯框也用 <textarea>,而且編輯內容裡面的 </textarea> 後端處理沒改成 </textarea>,整個編輯頁面就很悽慘....
緊急自救一下,把 templates/admin/editpost.template 75行
{$postText}
改成
{$postText|replace:'</textarea>':'</textarea>'}
算是可以用了....
一直有個疑問,blog 系統都是寫程式的人寫出來的,怎麼本身貼程式碼的支援都很差....Orz(之前試過不少,都不太滿意)
JSON, Object Literal 傻傻分不清楚
Foundations of Ajax 和 Ajax in Action 都沒把 JavaScript 中以大括號宣告物件的方式(稱作 Object Initializer 或 Object Literal)和 JSON 講正確,都把 Object Literal 講成是 JSON
Foundations of Ajax 是在 68、69 頁之間有點小誤導,Ajax in Action 則是在 B.2.1 完全講錯,還說 JSON 是 JavaScript 的核心特性(The JavaScript Object Notation (JSON) is a core feature of the language.)
Object Literal 才是 JavaScript 核心特性,JSON 是學 Object Literal 的部分語法而成的,一個資料交換的文字格式
所以絕對不可以說在 JavaScript 中以大括號選告物件是 JSON,它是 Object Literal,例如
Object Literal 屬性名稱可以不加引號,但 JSON 中那裡得是一個字串,一定要加引號,而且 JSON 不支援函式,所以:
將 cat 物件用 JSON 的 JavaScript library 輸出 JSON 字串,也不會包含函式部分
雖然字串 s 如果用 eval 可以成功變回 object
不過這是因為 eval 接受的是 JavaScript,s 是一個合法的 Object Literal 所以 eval 接受,但 s 不是一個合法的 JSON
JSON 格式是 Object Literal 的子集,所以合法 JSON 資料,eval 一定接受,反過來則不一定,合法的 Object Literal 不見得符合 JSON 格式
