在 Google Blogger 中使用 SyntaxHighlighter 3.0.83
http://sharedderrick.blogspot.com/2010/10/google-blogger-syntaxhighlighter-3083.html
更新日期:
2009/05/25
SyntaxHighlighter 作者已經更新到版本為 2.0.320 。
請參考以下的網址:
SyntaxHighlighter - Alex Gorbatchevhttp://alexgorbatchev.com/wiki/SyntaxHighlighter
但在 SyntaxHighlighter 2.0 以上的版本,其授權模式採取 Donationware。建議各位若要使用 SyntaxHighlighter 2.0 以上的版本時,記得要給作者實質上的鼓勵。請參考以下的網址:
SyntaxHighlighterDonate
http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
Donationware
SyntaxHighlighter is donationware. If you are using SyntaxHighlighter 2.0 on your site or including it in your product, please donate.
Retrieved from http://alexgorbatchev.com/wiki/SyntaxHighlighter
在撰寫網誌時,若是有使用到程式碼,可能多半會遇到將程式碼貼到網誌時,版面是一團混亂,目前筆者是使用 SyntaxHighlighter 這個免費的 Java Script 工具。這個是在客戶端的瀏覽器上執行,所以只要瀏覽器有支援,應該都可以正確顯示:
下載網址
dp.SyntaxHighlighter , Version: 1.5.1
http://code.google.com/p/syntaxhighlighter/
作者的網址:
http://www.dreamprojections.com/syntaxhighlighter
筆者以在 Blogger 中使用 SyntaxHighlighter 來介紹:
步驟1. 先去 SyntaxHighlighter 下載檔案。
步驟2. 到 Google Pages 申請免費的網頁存放空間。
http://pages.google.com/
因為 Google 已經停止 Google Pages。請改用其他方式來存放相關的程式碼,例如,使用 Google Code 等等。
Google Page 提供數項功能:
A. 提供免費的工具,協助您製作網頁、發行網頁。
B. 目前是提供 100 MB 的空間可供使用。
C. 提供多樣的佈景主題、版面等等可以自選。
...
請參考此處說明:http://pages.google.com/-/about.html#using
步驟3. 將檔案解開來後,在 1.5.1 版本中,解壓縮後,將會有 3 個資料夾;請將以下的檔案,全部上傳到先前申請 Google Pages 的空間上:
A. Scripts 資料夾內的程式(*.js 與 *.swf) 。
B. Styles 資料夾內的 SyntaxHighlighter.css。
步驟4. 登入您的 Blogger。
步驟5. 點選[版面配置]\[範本]\[修改 HTML]。
步驟6. 請以下的範例,複製到 </body> </html> 標籤的前面。
<link href="http://DerrickLaLa.googlepages.com/SyntaxHighlighter.css" type="text/css" rel="stylesheet"></link> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shCore.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushCpp.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushCSharp.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushCss.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushDelphi.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushJava.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushJScript.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushPhp.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushPython.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushRuby.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushSql.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushVb.js"></script> <script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushXml.js"></script> <script class="javascript"> dp.SyntaxHighlighter.ClipboardSwf="http://DerrickLaLa.googlepages.com/clipboard.swf"; dp.SyntaxHighlighter.BloggerMode(); dp.SyntaxHighlighter.HighlightAll('code'); </script>
提醒您:
1. 請將 DerrickLaLa.googlepages.com 置換為您所申請的網頁空間。
2. 若是 Google Page 停止申請,您若不介意的話,或許可以直接引用本站的範例碼來使用,也是可行的方法。
或是您可以連線 SyntaxHighlighter 作者提供的網址:http://alexgorbatchev.com/wiki/SyntaxHighlighter:Hosting
裡面由 1.5.1 版本到目前最新的版本 2.0.320 等都有提供,請自行參考。
但此網站的網路頻寬部分,筆者也不清楚,此外,若您要使用 2.0 以上的版本,其授權模式採取 Donationware。建議各位若要使用 SyntaxHighlighter 2.0 以上的版本時,記得要給作者實質上的鼓勵。請參考以下的網址:SyntaxHighlighter/Donatehttp://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
步驟7. 在撰寫網誌時,若是需要貼上程式碼時,可以搭配以下的使用方式:
<textarea class="languages" name="code" rows="50" cols="70"> ... 需要呈現的程式碼,請放置於此 ... </textarea>
或是
<pre class="languages" name="code"> ... 需要呈現的程式碼,請放置於此 ... </pre>
其中 languages 部分,目前所支援有:
C++、C#、CSS、Delphi、Java、Java Script、PHP、Python、Ruby、Sql、VB、XML/HTML 等等。
請參考以下列表,將指定的語言之 Aliases 置換到 languages 的位置上。
支援的語言
Here's a list of supported languages and their aliases:
Language | Aliases |
C++ | cpp, c, c++ |
C# | c#, c-sharp, csharp |
CSS | css |
Delphi | delphi, pascal |
Java | java |
Java Script | js, jscript, javascript |
PHP | php |
Python | py, python |
Ruby | rb, ruby, rails, ror |
Sql | sql |
VB | vb, vb.net |
XML/HTML | xml, html, xhtml, xslt |
步驟8. 另外,因為 Blogger 會將程式碼的最後面,新增一個換行符號<BR>,所以直接使用 SyntaxHighlighter 可能會有問題,請啟用 BloggerMode 即可解決此問題,範例碼如下:
dp.SyntaxHighlighter.BloggerMode(); dp.SyntaxHighlighter.HighlightAll('code');
請參考:
BloggerMode 的說明http://code.google.com/p/syntaxhighlighter/wiki/BloggerMode
筆者在步驟6. 的範例碼中,是已經包含啟用 BloggerMode 的程式碼。
步驟9. 請測試是否 SyntaxHighlighter 與 BloggerMode 有正常運作。
補充說明:
某些朋友在使用時,可能發覺在編寫一篇文章時,SyntaxHighlighter 並沒有動作,但 SyntaxHighlighter 是需要等到此文章發行到部落格上後,才能看到的效果。
採用 SyntaxHighlighter 的方式,這是將耗用掉客戶端的系統資源來執行 Java script。
所以如果下載網路速度慢,客戶端系統的硬體效能不佳,這是會有影響的。
可以參考官方的討論:How to use SyntaxHighlighter.
http://code.google.com/p/syntaxhighlighter/wiki/Usage
考慮使用 klein.stephane 所建議的,增加:window.onload = function () 或是 ashwin.jayaprakash 所設計的函數來改善...等等方式來處理。
今舉一個範例如下:
修改為:
此外,還有以下的事情需要留意:
window.onload 事件會在整個 HTML 頁面 (包含圖片等) 載入完成後,才進行執行。
但若是您先前也有程式使用 window.onload 的話,這將是會把前一個 window.onload 的動作給覆蓋。
感謝你的整理分享!
回覆刪除我剛好發現了你的blog
也會有我說的JavaScript錯誤,
我找到了解決的方法,
歡迎到我的blog看看^^
感謝分享,雖然目前尚未遇到您所提及的情境。
回覆刪除您好,我依您的教學修改blogger,但無論如何就是不會運作,不知道哪裡做錯了。
回覆刪除您可以撥空幫我看一下嗎?萬分感謝!
http://victe.blogspot.com
謝謝您,我已經解決問題了.
回覆刪除我的blog 也引用你整理的SyntaxHighlighter. 讚哦!
回覆刪除補充說明:
回覆刪除採用 SyntaxHighlighter 的方式,這是將耗用掉客戶端的系統資源來執行 Java script。
所以如果下載網路速度慢、客戶端系統的硬體效能不佳,這是會有影響的。
可以參考官方的討論:
How to use SyntaxHighlighter.
http://code.google.com/p/syntaxhighlighter/wiki/Usage
考慮使用 klein.stephane 所建議的,增加:window.onload = function () 或是 ashwin.jayaprakash 所設計的函數來改善...等等方式來處理。
房常感謝您的整理發表!
回覆刪除我已經由舊的< code > ... < /code >改用這種方式了.
能夠支援各種語言真是太美好了~~
感謝大大的分享!
回覆刪除我在套用的過程中發現一些問題:
當我在"修改html"中貼上script後一存檔,會變成如下:
...
dp.SyntaxHighlighter.ClipboardSwf="http://fell0206.quotaless.com/SyntaxHighlighter/clipboard.swf";
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
...
不知有什麼方法可以解決!請大大指點一下!
ps.網頁申請的空間應該不一定要是google pages 吧?
感謝,不錯用,因不能申請page了 直接用你的js,請見諒!
回覆刪除歡迎使用...^_^
回覆刪除SyntaxHighlighter的js引用来自外部,不会造成安全问题么,我使用好像发生了同源策略限制,没有成功过。然后我在本地测试时,js改成本地的,就完全没有问题了。
回覆刪除环境:firefox 3.0
js文件引用http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/
错误原因:dp.SyntaxHighlighter.HighlightAll is not a function
請問如何在SyntaxHighlighter內放入pre的標籤呢..不知道怎麼跳脫pre的 tag
回覆刪除Derrick 你好 :
回覆刪除我使用你張貼的 script 可以使我的scource code 成功的張貼出來. 非常感謝
而有實驗精成的我想要使用 新版的 2.1.364的版本
而 src 的位址使用
官網的
http://alexgorbatchev.com/pub/sh/2.1.364/styles/...js 來直接當做 script 和 css 的來源
而 script 的地方,使用別人網站張貼的方式
SyntaxHighlighter.config.bloggerMode = true;
23 SyntaxHighlighter.ClipboardSwf = 'http://yoursite/clipboard.swf';
24 SyntaxHighlighter.all();
而我source code 的方法使用
<pre class="brush:js;">
var test;
</pre>
但是一直無法呈現, 請問有哪些地方有錯誤法... 我自己試了好久 >"<