- 2008-07-24 (木)
- 技術
lightBox系の実装をしている場合、画面全体を覆うレイヤー1枚とダイアログ用のレイヤー1枚を表示することがありますが、
このときに背景にプルダウンがあるとそのプルダウンを1番前面に来てしまう現象がIE6であります。
IE7ではこのバグが解消されていますが、まだまだIE6のシェアは高いのでサービスによってはこのバグを取りのぞかなけらばならない場合があります。
プルダウンメニューの上にレイヤーを重ねると、プルダウンが手前に表示されてしまう不具合が修正されていた。 via: PXT255; - Internet Explorer 7 ようやくリリース
方法としては画面にあるすべてのプルダウンを「display:none」にしてやる方法と「iFrameを使う」方法があります。
display:noneは結構力技でプルダウンの個数に速度が影響されるため、あんまりオススメできません。
なのでiFrameで画面全体を覆ってしまう方法をご紹介します。
以下サンプルソースです。
IE6の場合のみに、iFrameを作成し透過させます。
これで画面内にあるプルダウンが見えなくなるので、バグを防ぐことができるのです。
なんかトリッキーですが、これぐらいやらないとlightBox系の実装が不十分になってしまうんですね。
う~ん、IE6対応・・・果てしなくメンドクサイw
ちなみにこのコードはjQueryを使ったThickBox 3.1を参考にしています。
ありがとうございます!
■追記
どうやらhttpsのサイトでこのiFrameの方法を使うとIE6で確認らしきダイアログが表示されてしまうようです。
なのでプルダウンをdisplay:noneにする方法のほうが確かかもしれません。
■さらに追記
ewbi.develops: IE, IFRAME, and HTTPS
こちらでiFrameを使ったHTTPSサイト対応が書いてありました。
src="javascript:false;"
これを入れると大丈夫みたいです。ボクはまだ確認できてませんw
【関連する記事】
- JavaScriptで単体テストをするならQUnitはいかが?
- キングボンビーがサイトを侵略する?jQuery Plugin - kingbonbi.js作りました
- jDropper.jsのブログパーツとBookmarklet
- Newer: ActionScript(AS3)からJavaScriptを呼ぶ方法(ExternalInterfaceクラス)
- Older: 買った本
Comments:0
Trackback:0
- TrackBack URL for this entry
- http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1073
- Listed below are links to weblogs that reference
- IE6でレイヤーを表示するとプルダウンが前面にきてしまう現象 from HouseTect, JavaScripter Blog

