Home > Windows > Internet Explorer > ver.6 特定のコメントより後のスタイル宣言が無視される

特定のコメントより後のスタイル宣言が無視される

HTML文書で用いている文字コードと外部スタイルシートで用いている文字コードが異なっているとき、外部スタイルシート内で特定の文字をコメントにすると、それより後の部分のスタイル宣言が無視される。

例示

外部スタイルシート「fig1.css」:

p.sa1 {
  color: red;
}

/* 定 */

p.sa2 {
  color: blue;
}

この文書「index.html」:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="fig1.css" />

<p class="sa1">コメントの前</p>
<p class="sa2">コメントの後</p>

コメントの前

コメントの後

バグを発生させるコメントのひとつである /* 定 */ を使用しています。この例示では2つ目のp要素の前景色が青色になるはずです。

スクリーンショット

N7.1N7.1での表示(標準モード)

WinIE6WinIE6.0での表示(標準モード)

補足

例示のバグはWinIEが、Shift_JISコードで記述された外部スタイルシートをUTF-8で記述されたものと誤認していることが原因と考えられます。これによりコメントの終わりを示す */ が化けてしまうとスタイルシートの終端までをコメントと認識されてしまいます。

UTF-8の場合、コメント文字列の終端に、Shift_JISコードの16進表記で下から2桁目が「E」や「F」になる文字が置かれたときにこの現象が発生しやすいようです。例えば「も(0x82E0)」、「状(0x8FF3)」、「定(0x92E8)」など多くの文字が該当します。

また、Shift_JISの外部CSSとEUC-JPのHTML文書を組み合わせた場合にも同様の不具合が発生します。

文字コードの誤認がバグの原因なので、外部スタイルシートで@charset宣言を用いて正しい文字コードを明示すればこのバグを回避できます。ただし、WinIE4は@charsetに対応していません。

修正状況

WinIE5.5、WinIE6.0でこの現象の発生を確認しました。

Home > Windows > Internet Explorer > ver.6 特定のコメントより後のスタイル宣言が無視される

Search
オススメ書籍
Feeds

Return to page top