IE6 は Windows XP にデフォルトでついているブラウザで、おそらく今最も普及率が高いのだが、 何せバグが多くて悩みの種になること多々。
IE6 を複数ウィンドウ開くとセッションが切れてしまうことがある。これは MS 認識済み。
上記はローカルページを開くと切れるような記述だけど、インターネット上のページでも次の手順で同様の問題が起こる。
これは、どうやらポップアップウィンドウが、1の段階で最初に開いたほうのウィンドウを親だと勘違いしているらしく、 当然そちらのウィンドウではログインしていないので、引き継ぐべきセッションが見つからずエラーになると。
おそらく同じ原因でこちらも報告されている。
仕様である!と決め台詞書かれてますが。
要は、クライアントであるブラウザはCookie情報をサーバ側に渡していて、サーバ側はそれをセッション管理に使用することになるんだけど、上記のオペレーションによってこのCookie情報が消える、または子ウィンドウに引き継がれない為に、このような事態になると考えられる。
対策としては、window.open などで開いたウィンドウに対して、そいつの親が誰であるかわからせてやれば良い、ということになる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| - | | | | | | | - - - | ! ! ! |
|
この問題は IE7 では解消されている。
IE6はPNGのアルファチャンネルに対応していないので、PNG画像が透過しない。
これは次のようにして回避可能。
1 2 3 4 5 6 7 8 9 10 | - ! - | - | ! - ! |
|
alpha.png というのが透過PNG。blank.gif は alpha.png と同じサイズの透明なGIF。
IE以外はそのまま alpha.png を表示し、IEの場合だけ AlphaImageLoader? を使う。 IE側のimgのsrcにはalpha.pngと同じサイズの透明な透過GIF(blank.gif)を指定して、 AlphaImageLoader?の方にalpha.pngを指定している。
IE7では透過PNGに対応しているので、isIE でバージョンまで判定してもいいかも。
IEは style の overflow (枠をはみ出したときの表示方法)指定の解釈が本来規定されているCSSの仕様に準じていないらしい。
このページではIE6以前のバージョンでの不具合と報告されているけど、 IE7の動作もちょっとあやしい。
overflowというのは、基本的には「枠からはみ出す部分は、そのままはみ出して表示しろ」という指示になるのだけど、IEはこれを無視して、枠自体を広げてしまうというおせっかいをやってくれるわけだ。ちなみに、サイズの最大値を指定する max-width とか max-height というものがあるが、これらはIEではサポートされていない(これはIEの仕様)。
これは、例えば次のようなスクリプトで対応するしかないのか。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| - | - | - ! - | | | - | | ! ! ! |
|
あとは、条件付コメント(Conditional Comments)でCSSを場合わけするとか。