2011年8月23日火曜日

SyntaxHighlighter 再び

先日の記事「シンタックスハイライティング」で当ブログにSyntaxHighlighterを組み込んだのですが、そのときから感じていたのが、「javascriptを大量に読み込んでるなぁ」でした。よく使うファイル形式に絞って読み込むという方法も考えられますが、公式サイトで説明されている"autoloader"をどうせなら使ってみようと思い立ったものの、またもやハマってしまいました。

テンプレートが保存できない

前回同様、前に公式ページを参考にjavascriptを配置して、「テンプレートを保存」したところ、エラーが発生しました。
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The content of elements must consist of well-formed character data or markup.
これは、しばらく考え込んだ結果、javascript中の不等号'<'を'&lt;'に書き換えればよいことに気がつきました。アポストロフィは保存時に勝手に書き換えるのに、不等号はやってくれないのですね…

動いているようで動かない

これでテンプレートの保存ができたので、期待を込めて「プレビュー」したのですが、シンタックスハイライティングが有効になりません。javascriptの文法に問題があるかもと、Chromeのデベロッパーツールで確かめてみたところ、スクリプト自体の動作は問題ないようです。

途方にくれ、web上をいろいろ検索していたところ、window.onloadのイベントで初期化を行えばよいということが判明しました。公式サイトのExamplesを見てもそういう説明はないのですが、autoloaderを使うときは初期化タイミングに気をつける必要があるようです。(ソースコードを追う気になれず:-;)

ようやく動いたのが下のコードです。





これで読み込むjavascriptの数も減って、多少軽はくなったんでしょうか。ブラウザのキャッシュに一回入ってしまえば差がないのでは?という気がしないでもないです。

0 件のコメント:

コメントを投稿