ASP.NETのmenuコントロールとIE8

世間は夏休みだということで(私は夏休みではないのだが)、久しぶりに「新館」の方でもメンテナンスしようと思い立った(まったく更新をサボっているので)。久しぶりにVisual Web Developer 2008を起動し、ちょこちょこといじくって勘を取り戻そうとしたのだが、トップ画面ですでにおかしいことに気付いた。

Menu_ie8_01

よく見ると、「健康メモ」の上にマウスポインタを持っていているのに、メニューがポップアウトしない。むむ、これはおかしいということでいろいろ調べてみると、これはIE8(Internet Explorer 8)独特の症状であるらしい。しかも、Menuコントロールのバグで、IE8には罪はないらしい。とすると、回避手段はないのだろうか?最近、IE8のユーザは増えてきているという。もしかして、我がブログにIE8の人が来たら、メニューがポップアウトせずにがっかりしてしまうかも知れない(だといいな)。

だが、回避手段は用意されているということだ。まず簡単なのは、IE8に対して、IE7だと思い込ませてしまうことだ。IE8には互換表示モードがあるので、それを有効にする。

Menu_ie8_02

こうするとあら不思議、メニューがポップアウトするようになる。

Menu_ie8_03

この方法は手軽だが、クライアント側に依存し、かつ閲覧者に知識がないと使えない。なので、開発サイドでなんとかできないかというと、METAタグを使ってIE8にIE7と思い込ませるヘッダ情報を送りつけてやればいいようだ、具体的には、以下のMETAタグを書いてやる。

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

これで、IE8がIE7をエミュレートするようになる。

何だかスッキリしないが、クライアントの環境や知識、サーバ側のバージョンによらず問題を回避するには、これしかないようだ。

いやはや、これで半日使ってしまった。もったいない。

コメント