| 1 |
wakaba |
1.1 |
|
| 2 |
|
|
[1] |
| 3 |
|
|
[CITE[4月の月例パッチ「MS06-013」適用で、キヤノンのプリンタ用ソフトに不具合]] <http://internet.watch.impress.co.jp/cda/news/2006/04/17/11678.html> |
| 4 |
|
|
([[名無しさん]] [WEAK[2006-04-17 22:23:46 +00:00]]) |
| 5 |
|
|
|
| 6 |
|
|
[2] |
| 7 |
|
|
<http://suika.fam.cx/~wakaba/-temp/test/dom/style-sheet/css-text/> |
| 8 |
|
|
の ie-crash-*.html。 |
| 9 |
|
|
|
| 10 |
|
|
[CODE(CSS)@en[[[cssText]]]] に代入する値が [[HTML]] |
| 11 |
|
|
[[要素]]の [[HTML DOM]] [[属性]]に由来する値だと |
| 12 |
|
|
[[WinIE 6]] ([[Windows XP]] [[SP2]]) がクラッシュします。 |
| 13 |
|
|
|
| 14 |
|
|
;; [CODE(HTMLe)@en[[[body]]]] とか [CODE(HTMLe)@en[[[p]]]] |
| 15 |
|
|
とか [CODE(HTMLe)@en[[[textarea]]]] とか、おそらく[[要素型]]は任意。 |
| 16 |
|
|
そして [CODE(HTMLe)@en[[[text]]]] とか [CODE(HTMLe)@en[[[background]]]] とか [CODE(HTMLe)@en[[[className]]]] とか |
| 17 |
|
|
[CODE(HTMLe)@em[[[accessKey]]]] とか |
| 18 |
|
|
[CODE(HTMLe)@en[[[value]]]] とか |
| 19 |
|
|
[CODE(HTMLe)@en[[[defaultValue]]]] とか |
| 20 |
|
|
[CODE(HTMLe)@en[[[name]]]] とか |
| 21 |
|
|
[[HTML DOM]] の任意の[[属性]]でおk。 |
| 22 |
|
|
でも [CODE(HTMLe)@en[[[nodeName]]]] |
| 23 |
|
|
とか [CODE(HTMLe)@en[[[nodeValue]]]] |
| 24 |
|
|
とか [CODE(HTMLe)@en[[[nodeType]]]] とかだと無問題。 |
| 25 |
|
|
|
| 26 |
|
|
([[名無しさん]] [WEAK[2007-05-10 13:57:17 +00:00]]) |
| 27 |
|
|
|
| 28 |
|
|
[3] |
| 29 |
|
|
[CITE[IT戦記 - style.cssText の使い処に関する考察]] ([CODE[2007-08-18 12:50:19 +09:00]] 版) <http://d.hatena.ne.jp/amachang/20070730/1185788557> |
| 30 |
|
|
([[名無しさん]]) |
| 31 |
|
|
|
| 32 |
|
|
[4] |
| 33 |
|
|
[CODE(DOMi)@en[[[CSSCharsetRule]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 34 |
|
|
で得られる値 ([[Firefox]] 2、[[Opera]] 9): |
| 35 |
|
|
= [CODE(CSS)@en[@[[charset]] "]] |
| 36 |
|
|
= [CODE(DOMa)@en[[[encoding]]]] [[属性]]の値 |
| 37 |
|
|
-- [[構文解析]]時に[[大文字]]・[[小文字]]の[[正規化]]などはなされません。 |
| 38 |
|
|
-- [[構文解析]]時に [CODE(charname)@en[[[NULL]]]] |
| 39 |
|
|
(と [[Opera]] 9 ではそれ以降の[[文字列]]) は除去されます。 |
| 40 |
|
|
= [CODE(CSS)@en[";]] |
| 41 |
|
|
|
| 42 |
|
|
[CODE(DOMa)@en[[[encoding]]]] に [CODE(CSS)[[["]]]] や |
| 43 |
|
|
[CODE(CSS)[[[\]]]] が含まれていてもお構いなしです。 |
| 44 |
|
|
|
| 45 |
|
|
([[名無しさん]]) |
| 46 |
|
|
|
| 47 |
|
|
[5] |
| 48 |
|
|
[CODE(CSS)@en[@[[namespace]]]] の [CODE(DOMa)@en[[[cssText]]]] で得られている値 ([[Firefox]] 2): |
| 49 |
|
|
= [CODE(CSS)@en[@[[namespace]] ]] (最後の1文字は |
| 50 |
|
|
[CODE(charname)@en[[[SPACE]]]]。) |
| 51 |
|
|
= もし[[名前空間接頭辞]]が指定されていれば、 |
| 52 |
|
|
それ、そのあとに [CODE(charname)@en[[[SPACE]]]] を1つ |
| 53 |
|
|
== [[構文解析]]時に [CODE(charname)@en[[[NULL]]]] (ry |
| 54 |
|
|
== 更に、[[構文解析]]時に[[小文字]]に[[正規化]]されています。 |
| 55 |
|
|
= [CODE(CSS)@en[[[url]](]] |
| 56 |
|
|
= [[名前空間URI]] |
| 57 |
|
|
== [[構文解析]]時に [CODE(charname)@en[[[NULL]]]] (ry |
| 58 |
|
|
= [CODE(CSS)@en[);]] |
| 59 |
|
|
|
| 60 |
|
|
[[名前空間接頭辞]]や[[名前空間URI]]にどんな[[文字]]が入っていようとお構いなしです。 |
| 61 |
|
|
|
| 62 |
|
|
([[名無しさん]]) |
| 63 |
|
|
|
| 64 |
|
|
[6] |
| 65 |
|
|
[CODE(DOMi)@en[[[CSSStyleDeclaration]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 66 |
|
|
で得られる値 |
| 67 |
|
|
= 存在する[[特性]]ごとに: |
| 68 |
|
|
== [[特性名]] |
| 69 |
|
|
--- [[WinIE 6]] では、既知の[[特性]]については[[大文字]][[正規形]]、 |
| 70 |
|
|
未知の[[特性]]は元のまま、[[Firefox]] 2 と [[Opera]] 9 では、 |
| 71 |
|
|
[[小文字]][[正規形]] |
| 72 |
|
|
== [CODE(CSS)[[[:]]]] |
| 73 |
|
|
== [CODE(charname)@en[[[SPACE]]]] |
| 74 |
|
|
== [[特性値]] (対応する [[DOM属性]]や |
| 75 |
|
|
[CODE(DOMm)@en[[[getPropertyValue]]]] で得られる値) |
| 76 |
|
|
--- [[WinIE 6]] で未知の[[特性]]では、 |
| 77 |
|
|
[CODE(CSS)[[[:]]]] の後 [CODE(CSS)[[[!]]]] や [CODE(CSS)[[[;]]]] |
| 78 |
|
|
や [CODE(CSS)[[[;]]]] の前まで、先頭と末尾の[[空白]]なし、 |
| 79 |
|
|
[[注釈]]なし |
| 80 |
|
|
== [CODE(DOMm)@en[[[getPropertyPriority]]]] が |
| 81 |
|
|
[CODE(CSS)@en[[[important]]]] なら、[[Firefox]] 2 のみ: |
| 82 |
|
|
=== [CODE(charname)@en[[[SPACE]]]] |
| 83 |
|
|
=== [CODE(CSS)[[[!]]]] |
| 84 |
|
|
=== [CODE(charname)@en[[[SPACE]]]] |
| 85 |
|
|
=== [CODE(CSS)@en[[[important]]]] |
| 86 |
|
|
== ([[Opera]] 9 または [[WinIE 6]]) 次の[[特性]]があれば、 |
| 87 |
|
|
または ([[Firefox]] 2) 必ず: |
| 88 |
|
|
=== [CODE(CSS)[[[;]]]] |
| 89 |
|
|
=== 次の[[特性]]があれば、 [CODE(charname)@en[[[SPACE]]]] |
| 90 |
|
|
-- [[WinIE 6]] では、未知の[[特性]]の[[宣言]]でも対応する [[CSSOM]] |
| 91 |
|
|
[[属性]]が作られるので、それが [CODE(DOMa)@en[[[cssText]]]] |
| 92 |
|
|
にも反映される |
| 93 |
|
|
-- [[Opera]] 9 では、重複する[[特性]]の[[宣言]]でも対応する [[CSSOM]] |
| 94 |
|
|
内の値が用意されるので、それが [CODE(DOMa)@en[[[cssText]]]] |
| 95 |
|
|
にも反映される |
| 96 |
|
|
- [[Firefox]] 2 と [[Opera]] 9 では、基本的に元の順序が保存される |
| 97 |
|
|
([[Firefox]] 2 では [[shorthand]] にまとめられる場合もあり、 |
| 98 |
|
|
その場合は最初の [[longhand]] の場所にまとめられる、 |
| 99 |
|
|
[[shorthand]] の項を参照) |
| 100 |
|
|
- [[WinIE 6]] では既知の[[特性]]のあと未知の[[特性]]となる、 |
| 101 |
|
|
既知・未知それぞれの中の順序は不明 (既知の順序は決まっているのかもしれないが、意味のある順序には見えない、 |
| 102 |
|
|
未知の順序は [[JavaScript]] の[[列挙]]の順序か?) |
| 103 |
|
|
|
| 104 |
|
|
([[名無しさん]]) |
| 105 |
|
|
|
| 106 |
|
|
[7] |
| 107 |
|
|
[CODE(DOMi)@en[[[CSSStyleRule]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 108 |
|
|
で得られる値: |
| 109 |
|
|
= [CODE(DOMa)@en[[[selectorText]]]] |
| 110 |
|
|
= [CODE(charname)@en[[[SPACE]]]] |
| 111 |
|
|
= [CODE(CSS)[[[{]]]] |
| 112 |
|
|
= [[WinIE 6]] では、[[改行]] |
| 113 |
|
|
= [[WinIE 6]] では、[CODE(charname)@en[[[SPACE]]]] |
| 114 |
|
|
= [CODE(DOMa)@en[[[style]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 115 |
|
|
= [[WinIE 6]] では、[[改行]] |
| 116 |
|
|
= [CODE(CSS)[[[}]]]] |
| 117 |
|
|
|
| 118 |
|
|
[[Firefox]] 2 と [[Opera]] 9 の挙動は一致 (ただし |
| 119 |
|
|
[CODE(DOMa)@en[[[style]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 120 |
|
|
や [CODE(DOMa)@en[[[selectorText]]]] で違っている) |
| 121 |
|
|
|
| 122 |
|
|
([[名無しさん]]) |
| 123 |
|
|
|
| 124 |
|
|
[8] |
| 125 |
|
|
>>7 の [[WinIE 6]] は [CODE(DOMm)@en[[[CSSStyleSheet]]]] |
| 126 |
|
|
の [CODE(DOMa)@en[[[cssText]]]] のうち、 |
| 127 |
|
|
[CODE(DOMi)@en[[[CSSStyleRule]]]] 相当の部分。 |
| 128 |
|
|
|
| 129 |
|
|
;; [CODE(DOMi)@en[[[CSSStyleRule]]]] の |
| 130 |
|
|
[CODE(DOMa)@en[[[cssText]]]] はないみたい。 |
| 131 |
|
|
|
| 132 |
|
|
([[名無しさん]]) |
| 133 |
|
|
|
| 134 |
|
|
[9] |
| 135 |
|
|
>>8 で、最後に必ず[[改行]]。 |
| 136 |
|
|
([[名無しさん]]) |
| 137 |
|
|
|
| 138 |
|
|
[10] |
| 139 |
|
|
>>8 で、最後に必ず[[改行]]。 |
| 140 |
|
|
([[名無しさん]]) |
| 141 |
|
|
|
| 142 |
|
|
[11] |
| 143 |
|
|
[[WinIE 6]] の [CODE(DOMi)@en[[[CSSStyleSheet]]]] の |
| 144 |
|
|
[CODE(DOMa)@en[[[cssText]]]]: |
| 145 |
|
|
= [CODE(DOMi)@en[[[CSSImportRule]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 146 |
|
|
相当 |
| 147 |
|
|
= [CODE(DOMi)@en[[[CSSFontFaceRule]]]] の [CODE(DOMa)@en[[[cssText]]]] 相当 |
| 148 |
|
|
= [CODE(DOMi)@en[[[CSSPageRule]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 149 |
|
|
相当 |
| 150 |
|
|
= [CODE(DOMi)@en[[[CSSStyleRule]]]] の [CODE(DOMa)@en[[[cssText]]]] |
| 151 |
|
|
相当 |
| 152 |
|
|
|
| 153 |
|
|
各 [CODE(DOMi)@en[[[CSSRule]]]] 相当の [CODE(DOMa)@en[[[cssText]]]] |
| 154 |
|
|
の連結です。各 [CODE(DOMi)@en[[[CSSRule]]]] 部は必ず[[改行]]で終わっています。 |
| 155 |
|
|
|
| 156 |
|
|
元の [[CSS]] の記述の順序に関わらず、種類毎に分けてでてきます。 |
| 157 |
|
|
種類内の順序は保存されます。 [CODE(CSS)@en[@[[media]]]] |
| 158 |
|
|
内では[[規則集合]]、[CODE(CSS)@en[@[[import]]]]、 |
| 159 |
|
|
[CODE(CSS)@en[@[[page]]]]、[CODE(CSS)@en[@[[font-face]]]]、 |
| 160 |
|
|
[CODE(CSS)@en[@[[media]]]] が使えますが、 |
| 161 |
|
|
[[規則集合]]以外では[[媒体型]]の情報は保持されません。 |
| 162 |
|
|
[CODE(CSS)@en[@[[media]]]] に相当する [[CSSOM]] |
| 163 |
|
|
上の[[物体]]はなく、[[規則集合]]はそれぞれ[[媒体型]]の情報を保持しているようです。 |
| 164 |
|
|
|
| 165 |
|
|
([[名無しさん]]) |
| 166 |
|
|
|
| 167 |
|
|
[12] |
| 168 |
|
|
[[媒体型]]は [[titlecase]] [[正規形]]で、最長で |
| 169 |
|
|
[CODE(CSS)[Print, Screen, Tv, Unknown, Aural, Braille, Embossed, Handheld, Projection, Tty]] |
| 170 |
|
|
になります。これに含まれない値が元々指定されていたら |
| 171 |
|
|
[CODE(CSS)[Unknown]] になります。 |
| 172 |
|
|
[CODE(CSS)[Print, Screen, Tv, Aural, Braille, Embossed, Handheld, Projection, Tty]] |
| 173 |
|
|
は [CODE(DOMa)@en[[[cssText]]]] 時に [CODE(CSS)[All]] に置き換えられます |
| 174 |
|
|
(逆に言えば、[[構文解析]]時に逆方向に展開しているのでしょう)。 |
| 175 |
|
|
|
| 176 |
|
|
[[入れ子]]の [CODE(CSS)@en[@[[media]]]] は展開・変換後の[[集合]]に対して[[論理積]]をとっているようです。 |
| 177 |
|
|
[[空集合]]になると [CODE(CSS)@en[Unknown]] になっているようです。 |
| 178 |
|
|
([[名無しさん]]) |
| 179 |
|
|
|
| 180 |
|
|
[13] |
| 181 |
|
|
[[規則集合]]に[[媒体型]]が指定されている場合、 |
| 182 |
|
|
[CODE(DOMa)@en[[[cssText]]]] の[[規則集合]]部分はこうなります: |
| 183 |
|
|
= [[改行]] |
| 184 |
|
|
= [CODE(CSS)@en[@[[media]]]] |
| 185 |
|
|
= [CODE(charname)@en[[[SPACE]]]] |
| 186 |
|
|
= [[媒体型]]名の[[並び]]の[[正規形]] (>>12) |
| 187 |
|
|
= [CODE(charname)@en[[[SPACE]]]] ×4 |
| 188 |
|
|
= [[改行]] |
| 189 |
|
|
= [CODE(CSS)[[[{]]]] |
| 190 |
|
|
= [[改行]] |
| 191 |
|
|
= [[規則集合]]の [CODE(DOMa)@en[[[cssText]]]] 相当 (>>7-9) |
| 192 |
|
|
= [[改行]] (↑の末尾も[[改行]]なので、[[空行]]になる) |
| 193 |
|
|
= [CODE(CSS)[[[}]]]] |
| 194 |
|
|
= [[改行]] |
| 195 |
|
|
|
| 196 |
|
|
([[名無しさん]]) |
| 197 |
|
|
|
| 198 |
|
|
[14] |
| 199 |
|
|
>>13 [[媒体型]]名の[[並び]]の[[正規形]]がまったく同じ[[規則集合]]が連続する場合、 >>13 の9番の部分に[[規則集合]]が複数入ります。 |
| 200 |
|
|
([[名無しさん]]) |
| 201 |
|
|
|
| 202 |
|
|
|
| 203 |
|
|
[15] |
| 204 |
|
|
その他の[[@規則]]の [CODE(DOMa)@en[[[cssText]]]] 相当の例:
|
| 205 |
|
|
[PRE(CSS example code)[
|
| 206 |
|
|
@import url( style );
|
| 207 |
|
|
@import url( style );
|
| 208 |
|
|
@import url( a );
|
| 209 |
|
|
@import url( stylea );
|
| 210 |
|
|
@font-face {
|
| 211 |
|
|
font-family: ;
|
| 212 |
|
|
}
|
| 213 |
|
|
@font-face {
|
| 214 |
|
|
font-family: a;
|
| 215 |
|
|
}
|
| 216 |
|
|
@font-face {
|
| 217 |
|
|
font-family: ;
|
| 218 |
|
|
}
|
| 219 |
|
|
@page xXXxxx {}
|
| 220 |
|
|
@page a:lEft {}
|
| 221 |
|
|
@page aa {}
|
| 222 |
|
|
@page :lEft {margin: 1em 2px; }
|
| 223 |
|
|
]PRE]
|
| 224 |
|
|
|
| 225 |
|
|
([[名無しさん]]) |
| 226 |
|
|
|