IE6にまつわる問題

IE6 は Windows XP にデフォルトでついているブラウザで、おそらく今最も普及率が高いのだが、 何せバグが多くて悩みの種になること多々。

複数ウィンドウを開くとセッションが切れてしまう問題

IE6 を複数ウィンドウ開くとセッションが切れてしまうことがある。これは MS 認識済み。

上記はローカルページを開くと切れるような記述だけど、インターネット上のページでも次の手順で同様の問題が起こる。

  1. まず1つIEを立ち上げ、さらにもうひとつIEを立ち上げる。
  2. 後から立ち上げた方のIEでセッションを利用するサーバへログイン(セッション生成)する。
  3. ログインしたIEでセッション情報を引き継いで処理を行うポップアップウィンドウ(window.open)を表示する。
  4. 3でポップアップしたウィンドウではセッションが切れている!

これは、どうやらポップアップウィンドウが、1の段階で最初に開いたほうのウィンドウを親だと勘違いしているらしく、 当然そちらのウィンドウではログインしていないので、引き継ぐべきセッションが見つからずエラーになると。

この問題は IE7 では解消されている。

透過PNGがサポートされていない問題

IE6はPNGのアルファチャンネルに対応していないので、PNG画像が透過しない。

これは次のようにして回避可能。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 
-
!
-
|
-
|
!
-
!
<script type="text/javascript">
//<!--
    var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer')+1?1:0);
    if (isIE) {
        document.write('<img src="blank.gif" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=alpha.png, sizingmethod=image);" />');
    } else {
        document.write('<img src="alpha.png" alt=""/>');
    }
//-->
</script>

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 でバージョンまで判定してもいいかも。


MLEXP. Wiki


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS