[1]
WinIE 6 は、選択子に構文的に未対応なものが含まれていると、選択子 (の群) 全体、つまり selectorText
を
UNKNOWN
に置き換え (て CSSOM の一部に含め) ます。
(名無しさん)
[2]
WinIE 6 は、未対応の擬似クラスを :unknown
に置き換え (て CSSOM の一部に含め) ます。
a:xxxx, b { color: red }
では、 CSS 2.1 的には宣言ブロック全体が無視されるべきですが、
WinIE 6 では b
が赤くなります。
(名無しさん)
[3]
WinIE 6 は、未対応の擬似クラスを :unknown
に置き換え (て CSSOM の一部に含め) ます。
a:xxxx, b { color: red }
では、 CSS 2.1 的には宣言ブロック全体が無視されるべきですが、
WinIE 6 では b
が赤くなります。
(名無しさん)
[4]
WinIE 6 の selectorText
決定算法:
NULL
は除去する (CSSの字句化を参照)。UNKNOWN
を返す。:
とその後に続く IDENT
または :
のみ) は未知なら:unknown
に置き換える。::first-letter
は
:
と :first-letter
の連続とみなされ、前者は :unknown
と解釈され、
それが後者により上書きされ、結局 :first-letter
になる。:
が単純選択子列の末尾に来るのはこの算法全体の2項目の場合に該当し、選択子群全体が UNKNOWN
となる。(名無しさん)
[5]
Firefox 1.5, 2 は @namespace
が使われていて
selectorText
の型選択子に名前空間接頭辞を付ける場合、
なぜか :not()
擬似クラスにも名前空間接頭辞を付けます。
他の擬似クラスの場合にはつけないようですし、
括弧の中身にも関係無しに付けるようです
(括弧の中に型選択子があれば、それにもちゃんと名前空間接頭辞をつけます)。
(名無しさん)
[6]
Opera 9 は普遍選択子が明示的または暗示的に用いられている場合 (明示的に用いられていても、それが唯一の{単純選択子|擬似要素}である場合以外、 selectorText
には現れません。) で、
@namespace
が使われていて型選択子等に名前空間接頭辞を付ける場合、省略されている普遍選択子には
|
だけをつけます。例えば、
@namespace 'http://www.example.com/'; .a {}
だと
|.a { }
になります。
(名無しさん)
[7] >>6 Firefox 2 も同じで、こちらは普遍選択子を省略しないので、
*|.a { }
になります。 (名無しさん)
[8]
WinIE 6 は、未対応の擬似クラスを :unknown
に置き換え (て CSSOM の一部に含め) ます。
a:xxxx, b { color: red }
では、 CSS 2.1 的には宣言ブロック全体が無視されるべきですが、
WinIE 6 では b
が赤くなります。
(名無しさん)
[9]
Firefox 2 の selectorText
:
*::
a:
*::b
[10]
<http://suika.fam.cx/gate/2007/cssom/viewer?c=a%20%5C%3A%20%7B%0A%20%20color%3A%20red%3B%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
→ a::
(名無しさん)
[11]
>>4 は不完全のようです。 >>9 を WinIE 6
に与えると UNKNOWN
になりますが、
>>10 を WinIE 6 に与えると
a\:
になります。
(名無しさん)
[12]
>>11
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%20%5C%3A%20b%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
は a\:b
になります。
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%20%5C%3A%20b%20%5C%3A%20e%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
や <http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%20%5C%3A%20b%20%5C%3A%20e%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
だと UNKNOWN
になります。どうも、
WinIE 6 は \:
を1つの字句とみなしている
(そして前後の空白を無視する) ようですね。
(名無しさん)
[13]
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%5C%3A%2F**%2Fb%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
のように \:
の後に注釈が入ると、子孫結合子があるものとして扱うようです。
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%2F**%2F%5C%3Ab%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
のように \:
の前に注釈が入った時は注釈を無視するようです。
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%2F**%2F%20%5C%3Ab%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
のように注釈の後に空白が入っても無視されますが、
<http://suika.fam.cx/gate/2007/cssom/viewer.en.html?c=a%20%2F**%2F%5C%3Ab%20%7B%0D%0A%20%20color%3A%20red%3B%0D%0A%7D;h=%3Cp%3EAAAA%3C%2Fa%3E;p=n;x=style-element>
のように注釈の前に空白が入ると子孫結合子とみなされるらしく、
UNKNOWN
になります。
(名無しさん)
[14]
>>5 の例 (a:not(a)
):
*|a*|:not(*|a)
(名無しさん)
(名無しさん)
[16]
Opera 9 は :lang()
の引数部を括弧もろとも
selectorText
には出しません。
Firefox 2 は大文字・小文字変換なし
(名無しさん)
[17] >>15 属性名の正規化では、要素型名との対応はチェックしていないようです。
XML 文書内のスタイル・シートでは、 Firefox 2 も Opera 9 も要素型名と属性名の大文字・小文字を保存するようです。 (名無しさん)
Firefox 2 は
の順に並べ替えます。同じ種類の単純選択子同士の順序は保存するようです。
(名無しさん)
[19]
Firefox 2, Opera 9 とも、
擬似要素の前が ::
となっていた場合、
:
に正規化します。
注釈、空白、escape はすべて除去します。
属性値はすべて "
区切りに正規化します。
(名無しさん)
[20]
Firefox 2, Opera 9 とも、選択子の区切りは
COMMA
SPACE
に正規化します。
(名無しさん)
[21] Firefox 2 は型選択子なき場合必ず普遍選択子をつけますが、 Opera 9 はそれ以外に単純選択子や擬似要素がまったくない場合を除き、 普遍選択子を除去します。 (名無しさん)
[22] Opera 9 で HTML 文書だと、なぜか15文字を超える属性名は空文字列に変換されてしまいます (XML 文書ではそうならないので、小文字正規化の部分がおかしい?)。 (名無しさん)
[23] Opera 9 で HTML 文書だと、なぜか15文字を超える属性名は空文字列に変換されてしまいます (XML 文書ではそうならないので、小文字正規化の部分がおかしい?)。 (名無しさん)
[24] Opera 9 で HTML 文書だと、なぜか15文字を超える属性名は空文字列に変換されてしまいます (XML 文書ではそうならないので、小文字正規化の部分がおかしい?)。 (名無しさん)
[25]
Firefox 2、Opera 9 共に、
@namespace
がない場合、
名前空間接頭辞である
|
(空文字列) はそのまま保存され、
*|
は除去されます。
要素型名はともかく、属性名で
*|
を除去すると意味が変わってしまうのですが、
どちらのブラウザも内部的には区別を保持したままのようです。
(名無しさん)
[26]
>>25 訂正。どちらのブラウザでも、属性名の
|
(空文字列の名前空間接頭辞)
は除去されます。
(名無しさん)
[27]
名前空間接頭辞の正規化については @namespace
の項にも調べた結果があります。
(名無しさん)
a[b] {} |a[|b] {} *|a[*|b] {} a|a[a|b] {}
に対応する selectorText
がどうなるか?
@namespace
なし:
既定名前空間のみあり:
名前空間接頭辞 a のみあり:
(名無しさん)
[29]
Firefox 2 も Opera 9 も子孫結合子は
SPACE
1つに正規化します。また、その他の結合子は前後に
SPACE
1つずつに正規化します。
(名無しさん)
[30]
Firefox 2 も Opera 9 も子孫結合子は
SPACE
1つに正規化します。また、その他の結合子は前後に
SPACE
1つずつに正規化します。
(名無しさん)
[31]
Firefox 2 も Opera 9 も子孫結合子は
SPACE
1つに正規化します。また、その他の結合子は前後に
SPACE
1つずつに正規化します。
(名無しさん)
[32]
Firefox 2 も Opera 9 も子孫結合子は
SPACE
1つに正規化します。また、その他の結合子は前後に
SPACE
1つずつに正規化します。
(名無しさん)
[33]
>>21 の Opera 9 の動作は名前空間接頭辞の存在と独立なので、
@namespace 'x'; [a]
の [a] にも |
だけがついて |[a] になってしまいます。
(名無しさん)
[34]
Firefox 2、 HTML 文書では、
@namespace
の有無と大文字・小文字の正規化は関係していないようです。
XML 文書では全部保存されます。
Opera 9 では、
*|
と等価な) 要素型名http://www.w3.org/1999/xhtml
な要素型名http://www.w3.org/TR/REC-html40
な要素型名であれば大文字・小文字を無視し、その他の場合には大文字・小文字を保存するようです。
(名無しさん)
[35]
>>28 の変化については、無視される非妥当な
@namespace
規則は考慮されないようです。
(名無しさん)