新生鳩丸掲示板♯

bakera.jp > 新生鳩丸掲示板♯ > 投稿順表示 (500/568)

投稿順表示 (500/568)

[1379] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

yuu (2003年12月17日 15時59分)

>>IEだけじゃなくて、MozillaやOperaもそうですね。

>

> そうでしたっけ。

"red" を red に補完するのは、無いですが、

co\00 lor とかのやつは、IE と Mozilla はほとんど同じ結果では。

Opera には一切効果ありませんでしたが。

[1378] Re: えび日記 : 「@i でインポート」

yuu (2003年12月17日 15時40分)

ちなみに、

@m

@me

@med

@medi

どれでも @media と同様の効果がありました。

標準モード・互換モードともに。

↓こんな感じので印刷プレビューして確認

<html>

<head><title>@mのテスツ</title>

<style type="text/css">

* {

font-style:italic;

}

@m print {

p {

font-style:normal;

}

}

</style>

</head>

<body>

<h1>ほげほげ</h1>

<p>うーんうーんうーんうーんうーんうーんうーんうーん</p>

<p>うーんうーんうーんうーんうーんうーんうーんうーん</p>

</body>

</html>

[1377] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月17日 15時37分)

>IEだけじゃなくて、MozillaやOperaもそうですね。

 そうでしたっけ。

 じゃあ Moziila や Opera もということで。

 要するに、

・仕様にない記述でも通ってしまうということ

・そのことがドキュメントされていないこと

 が問題なわけですが、これはなにも IE に限った話ではないと思います。

[1376] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月17日 15時2分)

丁寧な解説をありがとうございます。color: "red" などは、してしまうかもしれません。仕様通りに書かれていないスタイルは無視してくれるのが一番ありがたいのですけれど、、ブラウザ。@m など、あえて実装しているのなら公開文書が目につくところにないとセキュリティー対策上、困りますね。もっとも、目に付くところだと恥ずかしいかもしれません。

[1375] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

yuu (2003年12月17日 14時45分)

> こんなふうに標準モードと互換モードで挙動が違うという話もあったりするので、もうとにかく厄介です。

IEだけじゃなくて、MozillaやOperaもそうですね。

って話の流れ上はIEだけが問題なのかな。

よくわかりませんが脊髄で書いてみました【謎】。

[1374] Re: えび日記 : 「マーク・ハント」

ばけら (2003年12月17日 13時7分)

>最近不調のようですが・・・

 ですねぇ。

 最近のトレンドはボンヤスキー?

[1373] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月17日 12時48分)

>書き込んでスグニ関連のない話題だと気がつきました。間違い。すみません。あわてもの。

 関係ないつながりで関係ない話を書いてみますが、16日の日記について。

http://d.hatena.ne.jp/hoshikuzu/20031216#p4

>ふと、思いますが、”で囲わなくても良し、というのは、IEでは、いつからなのでしょう。これって困るんですけど。フィルターにとって。まじめなフィルターであればあるほど、CSSの部分をしっかり仕様にあわせて構文解析するはずです。仕様をあてにしてサニタイズするとダメですか?

 これですが、実は仕様自体が結構複雑でして、url() の中身となる場合は引用符で囲まなくて良いことになっています。CSS1 で最初に出てくる @import の例でも囲まれていません。

 また、url() 関数を使わないで文字列を直で書くこともできることになっていますが、その場合は「キーワード」ではなく「文字列」を書かなければならないので、引用符で囲む必要があります。結論としては、@import の書き方には

@import url("……")

@import url(……)

@import "……"

 の 3種があることになります。いちおう

@import ……

 という書き方は駄目なはずで、これについては IE が気を利かせすぎという話になると思います。

 また、二重引用符ではなく単引用符でも OK ですし、さらに後ろにメディアタイプ指定がついてくるパターンも存在します。

 @import の書式については、CSS2 のこの辺りが詳しいです。

 余談ですが、仕様的には

color: red;

 を

color: "red"

 と書いては駄目ということになっています。しかしこれは昔の IE では気を利かせて red と同一視していました (私の記憶が確かなら)。

 これは IE6 の標準モードでは正しく無視されるという挙動になったのですが、互換モードだとやっぱり気を利かせて red と同一視します。

 こんなふうに標準モードと互換モードで挙動が違うという話もあったりするので、もうとにかく厄介です。

[1372] Re: えび日記 : 「マーク・ハント」

或k-1馬鹿 (2003年12月16日 22時49分)

最近不調のようですが・・・

[1371] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月16日 22時18分)

ばけらさんのテストスイートを私の日記で参照させていただきました。ありがとうございます。

http://d.hatena.ne.jp/hoshikuzu/20031213#p4

IEだけがバギーと考えてもよろしいでしょうか。

[1370] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月16日 22時13分)

書き込んでスグニ関連のない話題だと気がつきました。間違い。すみません。あわてもの。

[1369] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月16日 22時11分)

なるほど、、、スタイル属性の中では、過去に検証したことがあります。

http://d.hatena.ne.jp/hoshikuzu/20030924

私の記憶では、crip\t が、Operaでも、Netscapeでも、IEでも通用してしまっていました。9月頃の最新で試したはずです。

[1368] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

yuu (2003年12月16日 21時58分)

> ……ただ、他の例についても NUL が無視されるという挙動は正しいのでしょうか? Mozilla 系でもやっぱり \0 は無視されてスタイルが適用されているようですが……。

Opera7.2だと、どれもスタイル適用されないですね。

[1367] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月16日 21時39分)

 すみません、私が出した正規表現に語弊があったようで申し訳ないです。

 16進エスケープの表現は仕様で正確に定められていまして、

\\[0-9a-f]{1,6}[ \n\r\t\f]?

 です。これは CSS2 の 4.1.1 に出ています。

 1桁から 6桁までの任意の数字が OK なのです。

#先の私の正規表現は出鱈目です。申し訳ないです。

 で、例によってテストを作ってみました。

 最後の二つは 7桁、0桁で不正なケースです。これら二つは黒背景・白文字になっては駄目です。

 ……ただ、他の例についても NUL が無視されるという挙動は正しいのでしょうか? Mozilla 系でもやっぱり \0 は無視されてスタイルが適用されているようですが……。

 NUL の扱いの規定って見た覚えがないので規定されていないような気がするのですが、調べてみます。

[1366] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月16日 20時24分)

<style>

h1 {

co\0 lor: red;

}

h2 {

co\00 lor: red;

}

h3 {

co\000 lor: red;

}

h4 {

co\0000 lor: red;

}

h5 {

co\00000 lor: red;

}

h6 {

co\000000 lor: red;

}

div {

co\ lor: red;

}

</style>

<h1>h1</h1>

<h2>h2</h2>

<h3>h3</h3>

<h4>h4</h4>

<h5>h5</h5>

<h6>h6</h6>

<div>div</div>

ばけらさんの正規表現を、ちょっと図解してみました。なっていませんが。

ブラウザの CSS が正しく実装されているならばdiv要素はブラウザの既定のスタイルで表示される、と考えてよろしいでしょうか。IEならば黒。h2要素とh6要素で赤くなるの正しいと直感的に思います。その他は、不勉強な私には不明です。

[1365] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月16日 18時53分)

> 私にも分かりません。これは CSS 仕様の想定する挙動ではなく、MSIE が独自に気を利かせちゃっているのではないかと思います。

 ……と書いてから思い直したのですが、ひょっとするとバグなのかも知れません。以下はあくまで私が想像したシナリオですが……。

 バックスラッシュの後ろに 16進数の数値を書くというエスケープの方法があるのですが、それが MSIE の場合

"\[0-9]+ "

 ではなく

"\[0-9]* "

 にマッチするモノに対して処理されているのかもしれません。

 そうだとすると、\ の後ろに数字が無くてスペースが来る場合も (誤って) このパターンにマッチしてしまい \HH のエスケープとみなされます。数字部分は空ですがこれは 0 とみなされて、NUL 文字に展開されます。

 CSS2 では \HH エスケープに続く後ろの空白ひとつが削除される仕様ですから後ろのスペースひとつが削除されて NUL 文字だけとなり、NUL は消滅すると……。

[1364] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月16日 18時39分)

>これでは、赤い字のh1要素がcenterに位置づけられます。

>(WinIEではそうでした。)

>バックスラッシュの後のスペース文字が、どういうわけだか

>無視されます。

 むほっ、本当だ……。

>仕様を真剣に読んでもわかりませんでした。

 私にも分かりません。これは CSS 仕様の想定する挙動ではなく、MSIE が独自に気を利かせちゃっているのではないかと思います。

 @i も !i もこれもそうなんですが、余計なところで余計な気を利かせると前方互換性的にもセキュリティ的にもマズいですね。

 他にも気を利かせている例がありそうな気がしますが……。

[1363] Re: えび日記 : 「@i でインポート」

えむけい (2003年12月16日 11時39分)

サニタイザー【謎】としては、頭に「_」を付けただけで貫通されないよう注意する必要があるということですね。まあホワイトリストならだいたいあんしんですが。

[1362] Re: えび日記 : 「@i でインポート」

yuu (2003年12月16日 11時11分)

>>もちろん使いまくりです。

>>しかしそのうえで、状況に応じてその他の手段もあるに越したことはないのです。

>

>御意ですが、ホゥルの危険性とかサニタイズする側の苦労を増やしてでもあったほうがいい手段かというと微妙な感じです。

プロパティ名の頭に _ をつけるやつは便利ですけど。

[1361] Re: えび日記 : 「@i でインポート」

えむけい (2003年12月16日 9時15分)

>もちろん使いまくりです。

>しかしそのうえで、状況に応じてその他の手段もあるに越したことはないのです。

御意ですが、ホゥルの危険性とかサニタイズする側の苦労を増やしてでもあったほうがいい手段かというと微妙な感じです。

[1360] Re: えび日記 : 「@i でインポート」

yuu (2003年12月16日 8時48分)

>IE5以降ならConditional Commentが一番【謎】なのでは。

もちろん使いまくりです。

しかしそのうえで、状況に応じてその他の手段もあるに越したことはないのです。

最近の日記

関わった本など