[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 規則は考慮されないようです。
(名無しさん)