CDATA型属性値先頭の空白類文字を無視しない

症状

ユーザエージェントは、CDATA型の値を持つ属性(class, alt, name, valueなど)の属性値の先頭または末尾にある空白文字は無視してよいとされている。しかし、Operaは先頭の空白文字を無視せず、空白のある値と空白のない値を別の値として扱ってしまう。

例示

<style type="text/css">
.sample {
  font-weight: bold;
}
</style>

<ul>
<li class=" sample">先頭空白あり</li>
<li class="sample ">末尾空白あり</li>
<li class=" sample ">先頭末尾空白あり</li>
<li class="sample">空白なし</li>
</ul>
  • 先頭空白あり
  • 末尾空白あり
  • 先頭末尾空白あり
  • 空白なし

空白文字を無視するのであれば、4つのリストアイテムの文字列はボールド体で表示されるはずです。

スクリーンショット

N7N7.02での表示(標準モード)

Op7Opera7.11での表示(標準モード)

補足

HTML4.01仕様書では空白文字を「無視してもよい」としています。「無視しなければならない」とされていない以上、Operaの実装は厳密にはバグではないといえるかもしれません。

このバグを利用してブラウザ振り分けを行える可能性がありますが、仕様書は先頭あるいは末尾に空白文字のある属性値を宣言することを避けるべきであると定めています。

修正状況

Opera6.06、Opera7.11標準モード、Opera7.11互換モードで不具合の発生が確認されました。

関連記事

スポンサーリンク

処理中を表すプログレスダイアログを表示する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る