星期三, 二月 28, 2007

以為用了 dp.SyntaxHighlighter 就可以放心貼程式碼....

之前在 ingramchen 那看到 dp.SyntaxHighlighter 就很想裝,現在終於裝了....

以為可以放心用力貼程式碼,結果要重新編輯貼了程式碼的文章就出問題,LifeType 的編輯框也用 <textarea>,而且編輯內容裡面的 </textarea> 後端處理沒改成 &lt;/textarea>,整個編輯頁面就很悽慘....

緊急自救一下,把 templates/admin/editpost.template 75行

{$postText}
改成
{$postText|replace:'</textarea>':'&lt;/textarea>'}

算是可以用了....

一直有個疑問,blog 系統都是寫程式的人寫出來的,怎麼本身貼程式碼的支援都很差....Orz(之前試過不少,都不太滿意)

作者 JiaYun ( Blog ) :: 迴響 (0):: 靜態連結網址:: 引用 (0)

JSON, Object Literal 傻傻分不清楚

Foundations of AjaxAjax 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 格式

作者 JiaYun ( JavaScript ) :: 迴響 (1):: 靜態連結網址:: 引用 (0)