What's new in IE6

〜 Internet Explorer 6 の食えない事情 〜

ここでは、2001年 9月に正式リリースを迎えた Internet Explorer 6.0 の 素晴らしい機能の一端を紹介します。 ← ウソ f(^^;

... あれ?この出だしは「What's new in IE5」と同じだ(笑)。
まあ、主旨も同じですからヨシとしましょう。


目  次

IE6 のバージョン
まあ、「What's new in IE5」と同じようなモンですけどね...
標準準拠モード
標準準拠モードって困らない?
総称フォントファミリ
あれ、文字が表示されない!
日本語の文字化け
charset指定があっても文字化けするなんて...
WinXP+IE6 で Windows Updateできない!?
JavaScript じゃなくって、HTTPプロトコルの話(笑)

IE6 のバージョン

IE5 の時と同様 JavaScript から見るバージョンは( Windows 98 の場合 ) このようになります。

appVersion : 4.0 (compatible; MSIE 6.0; Windows 98)
userAgent  : Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)

つまり、 IE5.0/IE6.0 とはブラウザのバージョン( MSIE 6.0 )が異なるだけです。

また JavaScript 自体は 1.3 のようです。

* しかし、MS の Version Infomationを見ると、 同じ JavaScript1.3 であるハズの IE5.0, IE5.5 の間でも若干の差があるようです。

言語仕様の実装が変わったら、バージョン自体も変更する必要があると思うんですが...
IE6 でも違う部分があるんでしょうかね〜
#> 現時点( 2001.09.30 )では IE6 の欄はなかったです


標準準拠モード

MS の msdn library IE6 における CSS の拡張 によると IE6 は CSS1(笑) を完全にサポートしているようです。

従来のスタイルシートと CSS1 との最も大きな差は多分ボックスモデルでしょう。 スタイルシートで指定したサイズの意味するところが異なるため、 緻密にデザインされたページは CSS1 のもとではデザインが崩れる可能性があります。

気になる従来との互換性についてはこんな記述があります。

しかも、これらの機能拡張の素晴らしい点は、 以前のバージョンの Internet Explorer 用に開発したアプリケーションを使用しても、 互換性にかかわる深刻な問題が発生しないことです。

この記述の理由は CSS1のサポートを「標準準拠モード」と称して DOCTYPE宣言の記述方法により切り換えるためのようです。

簡単に言えば HTML4 の DOCTYPE宣言で タイプを Framset か String に指定するか あるいは DTD への URI を記述することで標準準拠モードになるようです。

そこで1つの疑問が湧きます。

HTML4 の DOCTYPE宣言には使用するスタイルシートのレベルの指定ができたのだろうか?

DOCTYPE宣言はあくまでも HTML の記述のレベルに関する指定なので 非HTML要素のスタイルシートの指定を styleタグ や linkタグで指定するならわかるのですが...

#> 元もと HTML を HTML4 strict で記述していて IE で表示確認をしていたページは ひょっとするとデザインが崩れるかもしれません。

CSS2 や CSS3 についてはどーするのでしょうかね〜 f(^^;


総称フォントファミリ

スタイルシートを使用する場合、 ページの雰囲気に合わせてフォントを指定することは良くあります。

フォントの指定( ここでは font-family )には使用したいフォント名の他に 総称フォントファミリも指定すると思います。

IE6 では総称フォントファミリを指定する場合、注意( と言うか、留意というか... )が必要です。 つまり、"sans-serif" や "cursive" を指定すると日本語が表示されないようです。

sans-serifかな、カタカナが表示されない
cursive数字を除く日本語が表示されない

#> 確認用サンプルはこちら

こういう場合はしょーがないので "MS UI Gothic", "AR隷書体M" など(*1)の family-name も指定します。 (-_-;

*1 う〜む。 family-name を指定すると言っても、 どの Windows マシンにも入っている日本語フォントって何だろう...
全て "MS ゴシック" とかにしちゃうのもなんだし...

また、IE5 ではフォント名を指定した場合に、コードページ932 にない文字が表示できない 未解決の問題があるようですが、 IE6 の問題はこれとも違いそう... f(^^;

こんな類の問題はすぐにパッチが出そうな気もする... > 当分ほっとこーっと


日本語の文字化け

ん〜。以前のバージョンでもそうだったんですが、 metaタグで charset 指定がしてあってもブラウザのエンコードを自動認識に設定していると 正しく文字コードを認識できない場合があるようです。

これだけなら JavaScriptネタではないのですが、 どうやらこの metaタグ を JavaScriptで出力している時に発生するように見えます。

charset として "Shift_JIS" が指定できるようになったのは比較的最近の話で 以前は "x-sjis" で指定していました。つまり、古いブラウザで "Shift_JIS" を指定すると いろいろと不幸なことが発生するので、 JavaScript でブラウザのバージョンを判断し meta タグを出力( document.write )すると、出力した値は無視して文字列の自動認識を 行った結果として英文と判断されるようです。

#> と、思っていたら、最近文字化けが発生しなくなっている...
どーも、上に書いたような単純な理由じゃあないようです。
ってことで、調査は続く... かも。 f(^^;


WinXP+IE6 で Windows Updateできない!?

リリースするや重大なセキュリティホールが発見され、 しかもサーバ障害で Windows Updateできないオマケまでついた WinXP ですが、 それ以外にもファイアウォール環境では Windows Update できない可能性があります。

これは Windows Update する際の HTTP Protocol を扱うエンジン部分が 他のプラットフォームと異なる(*1)ためのようで、 デジタル署名のデータなどを取得する時、 他の環境では通常 If-Modified-Since ヘッダを付加して GET するところを HEAD で行っています。

問題はこの HEAD コマンド送出の際 "Content-Length: 0" を付加している(*2)ために、 ある種のプロクシサーバ( 少なくとも Squid2.3.STABLE3 以前 *3 )では無意味なヘッダとして エラー応答することが原因で失敗します。

*1 Windows Update に使用される処理の一部は IE とは異なるコンポーネントを使用しているのか 送出する User-Agent が異なります。

Win98+IE6 環境では "Windows Update", "CryptRetrieveObjectByUrl::InetSchemeProvider" など使用され、
WinXP+IE6 環境では "Industry Update Control" が使用されるようです。

*2 Content-Length は RFC では 0 以上の値として規定していますから間違いではないと思いますが HEAD コマンドは Content 自体を持たないコマンドなので付ける意味がありません。

ひょっとすると .NET Framework に絡んだ実装でしょうか?
だとすれば .NET の品質には疑問が湧きますが...

*3 この問題は Squid2.3.STABLE4 で修正されているので Squid に関してはバージョンアップで回避できますが、 他のプロクシサーバに関してはどうなるか不明です。


Copyright(c) 2001-2002 ShinSoft. All rights reserved.