CoffeeScriptで/*@cc_on@*/

条件付きコメントを使えばいいという話でもありますが、ここでは、ちょっとした時に便利なJavaScriptのIE限定条件付きコンパイル/*@cc_on .. @*/をCoffeeScriptで使う方法を検討してみます。

といっても大層な話ではなくEmbedded JavaScriptを使うだけです*1

# if-else
`if (/*@cc_on!@*/false) {`
alert "ie"
`}`

# UA判別
ie = `/*@cc_on!@*/false`
alert "not ie" unless ie

余談ですが、上記のコードのコンパイル結果を見るとわかりますが、var ie;がif文に入ってしまうのですね。恐らく無名関数で囲むだとかのテクニックのことを考慮しているのだと思いますが、JavaScriptの埋め込みを冒頭で使う時は注意が必要かもです。

結局やっていることはIEの判別なので、UAを見れば良い気もしてきました*2

これでよかった

if `/*@cc_on!@*/false`
  alert "ie"
else
  alert "not ie"

*1:といいつつサンプルコードはIEで動作確認してないのであしからず

*2:まぁUAは偽装できるので一応厳密ではあります