Aug 27, 2009

MovableTypeでonLoadに関数を追加する

MovableType上でSyntaxHighlighter等を動かす場合, onLoad に手を加えないといけません. その方法についてちょっと調べてみましたが, 見つからなかったのでメモしておきます.

<body onload="...と書くにしても, bodyはグローバルテンプレートのヘッダにあります. afternooncafe.jpでは全部のテンプレートを書き直しているので問題はないのですが, 標準テンプレートを使っている所では難しいでしょう. mtInitを書きかえるという方法も見つけましたが, MTが用意しているScriptはメンテナンスの観点から変更したくありません.

解決方法はすごく簡単で, mtAttachEventを使えば良いのです. SyntaxHighlighter 2.0の例でいくと,

こんな感じです. HTMLヘッダに要素を追加したい場合, html_headerに値を追加すれば良いので, 以下の文をエントリアーカイブのテンプレートにでも入れておけば問題ありません.

mtAttachEventの中身ですが, 以下の様なaddEventListener (と IE用にattachEvent)かと思っていました.

しかしながら, 実際のソース(mt.jsの中にあります)を見ると微妙に異なっていました. attachEventとaddEventListenerの仕様の違いを気にしたからでしょうか…

No comments:

Post a Comment