2009年6月16日火曜日

CSSの日本語コメントは危険らしい(IE限定?)

ASP.NET 2.0のWEBアプリケーションを開発していた時のこと。
TextBoxフォーカス時のIME制御の為に、以下のクラスを外部CSSに定義し、TextBoxのStyleに設定した。

動かしてみたところ、適用されない。
それどころか、上記クラス以降に定義した全てのスタイルが適用されなくなってしまった。括弧の閉じ忘れやら全角スペースが混入してるといったケアレスミスも見当たらない。何故だ?
取り敢えずCSSファイルを元に戻してみると、正常に適用された。やはり原因は上記のコードにあるようだ。

どの行が原因があるかを見極めるため、コードの1行を削除して実行ということを繰り返す。結果、「/* IMEモード 日本語入力 */」の行が悪さをしているらしいことが発覚。
えっ!?コメント行だけど?アメリカ横断ウルトラクイズの如く、頭上に「?」マークがきらめく。だが、現実だ。

今度は、この行の1文字ずつを削除して実行してみる。
犯人は、万物の生命の源である「日」でした。
これを消したら正常にスタイル適用されました。
そう言えば、もうすぐ日食ですね!

調べてみると、似たような現象で困ったという記事がいくつか見つかった。僕と同じ「日」の例は見つからなかったが。どちらもIEで発生している模様。IE限定の問題なのか?ちなみに、僕が当現象を確認したブラウザもIE6。
1番目の記事ではかなり詳細に実験を行って解説してくださっています。いや~勉強になります。
2番目の記事ではCSSファイルの文字コードを変更して「文字コード宣言」なるものを行って解決したとのこと。僕の環境のCSSファイルの文字コードを確認してみるとShift-JISでした。ASP.NETは確かUTF-8だっけか?この違いによるものなのかな…
ちなみに、文字コード宣言は極力行うべきだそうです。ただでさえ文字化け対策面倒なのに、コメントにまで気を遣わないといけないのかよ…

0 件のコメント: