SUSH-i LOG

名古屋のWeb制作会社につとめるプログラマーのつぶやき

条件付きコメント内のパスをDreamWeaverのテンプレートに認識させる

条件付きコメント内のパスをDreamWeaverのテンプレートに認識させる

IE6対応をしていると時々条件付きコメントを使って、特定のブラウザ・・・主にIE6ですが・・・だけに読み込ませたいJavaScriptやCSSを記述すると、DreamWeaver内ではコメントと扱われてしまうため、パスが通らなくなってしまい面倒だったので、色々と試してみました。

条件付コメントとは

条件付コメントとは、IEだけに解釈されるHTML内に記述することが出来る条件分岐の記述のことです。
実際には下記のように記述します。

<!--[if IE 6]>
ここはIE6のみ表示
<![endif]-->

この様に、通常のブラウザではコメントアウトと認識され、特定のブラウザだけ表示させられる仕組みです。
google-code-prettifyでもコメントアウトと扱われてしまっていますね。

使用例

例えばIE6だけに読み込ませ実行させたい、pngfixのライブラリであったり、印刷用のCSSだったりに使えるのですが、前述したとおりDreamWeaver上でもコメントアウトとして認識されてしまい、条件付コメント内でリンクを貼った場合も無視されてしまいます。

DreamWeaverで扱う問題点

特定のページのみ記述するだけであれば特に気にする必要はありませんが、全ページにテンプレートを使って記述したい場合、階層が変わってしまうとリンクが外れてしまい面倒でした。

解決方法

DreamWeaverのテンプレートの機能の中に変数を扱う機能が含まれています。
それを利用しコメントアウトの部分を分割することで、テンプレート上ではコメントアウトではなく、生成されたHTMLでは条件付コメントとして出力されるようにします。

実際の方法は下記の通り。

@@('<!-')@@-[if IE 6]>
<script type="text/javascript" src="./path/to/script.js"></script>
<![endif]-@@('->')@@

テンプレートファイル限定ではありますが、この様に記述することで、条件付コメント内のパスを崩さずに扱うことが出来ます。

参考