まったりゲーム記

やはりTAPは名作だと思うのだ

全体表示

[ リスト ]

原因について、こんな記事があった。

要するに、Win版IEにおけるSELECTオブジェクト(その他特殊なオブジェクト)は、HTML要素ではなくウィンドウコントロールである、ということが問題の根っこらしい。

以下、元記事から引用

ウィンドウコントロール(windowed control)は、ウィンドウハンドル(Win32の上級者風にいえば
HWND)を持つコントロールを指し、Windows開発者が使用する用語です。ウィンドウコントロールは、
ブラウザではなく、オペレーティングシステムによって管理および描画されます。Microsoftは、
IEを開発する際、HTMLのSELECT要素の実装として、コンボボックス(ウィンドウコントロール)の
Windowsにおける既存の実装を使用するようにしました。さらに、ActiveX、Flash、Adobe PDF
ビューアなどの他の埋め込みオブジェクトは、ウィンドウコントロールとして実装されています。

問題が発生するのは、HTML要素のzIndexとウィンドウコントロールのzIndexは扱いが異なり、
IEでは常にウィンドウコントロールがすべてのHTML要素の上に配置されるためです。

この問題は、DHTMLのzIndexプロパティに関するMSDNドキュメントにおいて扱われており、
zIndexプロパティはウィンドウコントロールをサポートしないことが明記されています。


あんまりと言えばあんまりなオチです。

迷惑を被っている側からすれば「それって手抜きじゃねーのか」と言いたくなるようなビックリ仕様。

結局、MSがアレだった、ってことでいいんでしょうか?



で、同記事には解決策も載っており、これが有名な「IFRAMEを下敷きにする」という手法。

私もその手法を使って応急処置を施したわけですが、何でそれで大丈夫なのか?までは分からずに使っていました。

同記事では、そのことについても解説がされてるので、またまた引用してみましょう。


IE 5.5以上では、IFRAME要素のzIndexは、ウィンドウコントロールとHTML要素の両方で処理されます。
つまり、SELECTの上にIFRAMEを配置することができ、IFRAMEはSELECTウィンドウコントロールを
覆います。さらに、DIVをIFRAMEの上に配置することができ、DIVの下にあるIFRAMEまたはSELECTが
透過して表示されることはありません。



……………………………………
…………………
……



なんか、またアレなことが書いてあったような無かったような……




IE 5.5以上では、IFRAME要素のzIndexは、ウィンドウコントロールとHTML要素の両方で処理されます。




ちょっとマテ。


なんだってまた、このようなドッキリ実装が為されているのでしょうか?


正直、理解に苦しみます。


いやまあ、対処療法的には良いんですが、もうどこから突っ込めばいいのかワケが分かりません。


さっさと分かりやすい実装にしてくれ、と声を大にして言いたいところです。


(IE7からは、上記仕様は修正されるらしいですが……)

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事