14

うーん、誰かがこの問題に遭遇したかどうかは
わかりませんが、簡単な説明は IE6 にあります。任意の<select>オブジェクトが他のアイテム、さらには div の上に表示されます...つまり、上部にあるはずの div を表示する派手な JavaScript 効果がある場合すべて (例: ライトボックス、マルチボックスなど) の特定の要素の onclick で、その div が<select>あなたの div get の下にあるかのように表示される<select>[この場合、最大および最小の z-index は機能しません]

私はグーグルを試してみて、iframe shim ソリューションを見つけましたが、
かなりクリーンな代替案が必要でした。iframe を使用する方法は約 130 MB の RAM を使用するため、貧しい人々 のマシンの速度が低下する可能性があります。

4

7 に答える 7

8

selectループを使用してすべてを非表示にする必要はありません。必要なのは、次のような CSS ルールだけです。

* html .hideSelects select { visibility: hidden; }

そして、次の JavaScript:

//hide:
document.body.className +=' hideSelects'

//show:
document.body.className = document.body.className.replace(' hideSelects', '');

(または、お気に入りaddClass/removeClass実装を使用できます)。

于 2008-10-22T08:01:35.463 に答える
3

iframe メソッドを非常に簡単に実装できるようにするbgiframeと呼ばれる jquery 用のプラグインがあります。

個人的には、Web 開発者として、もはや IE6 でのユーザー エクスペリエンスは気にしないところまで来ています。できるだけ「正確」に近いレンダリングを行い、機能することを確認しますが、速度に関しては残念です。彼らはアップグレードできます。IE7 (他のすべてのブラウザーに比べるとまだかなり遅いですが) がリリースされてから 2 年が経ちました (ほぼ 1 日!)。IE8 はまもなくリリースされます。Firefox はすべてのプラットフォームで利用できます。Safariもオプションです(そして超高速です)。Opera はほとんど/すべてのプラットフォームで利用できます。

IE6 は 7 年以上前にリリースされました。私見ですが、怠惰なユーザーや無能な IT 部門 (または Web 開発者) 以外に、まだ使用する理由はありません。

于 2008-10-22T06:04:10.740 に答える
2

興味のある方のために、IE シミング コードをいくつか示します。

* html .shimmed {
    _azimuth: expression(
        this.shimmed = this.shimmed || 'shimmed:'+this.insertAdjacentHTML('beforeBegin','<iframe style="filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);position:absolute;top:0px;left:0px;width:100%;height:100%" frameBorder=0 scrolling=no src="javascript:false;document.write('+"''"+');"></iframe>'),
        'inherit');
}

ref: subtleGradientによるこの要点とZach Leathermanによるこの投稿

于 2008-11-21T21:21:47.770 に答える
1

その厄介なIEバグに対する最も単純で最も洗練された解決策は、http://docs.jquery.com/Plugins/bgiframeusingjQueryにあります。

フライオーバーメニューを含むすべてが動的であるWebSpherePortal/ Portal Applicationsで動作させるために、2日間試行した後、その結論に達しました。

于 2009-11-17T20:27:16.067 に答える
1

IE7 より前は、ドロップダウン リストは「ウィンドウ化された」コントロールでした。つまり、ブラウザが合成するのではなく、Windows によって直接コントロールとしてレンダリングされていました。そのため、他の合成コントロールに対して z-indexing をサポートすることはできませんでした。

DDL の上に表示するには、IFRAME などの別のウィンドウ コントロールを使用する必要があります。ほとんど知られていない IE 専用の window.createPopup() という機能を使用することもできます。これは本質的にクロムレス ポップアップを作成します。止められないクリックアウトなどの制限がありますが、ホバーメニューシステムを構築している場合は実際に役立ちます.

于 2008-10-22T05:35:16.053 に答える
0

多くの人が独自のヒントを提案していることは知っていますが、私の場合は、以下のようにjqueryを使用してselectを非表示にするだけです。

$(':date').dateinput({
    format: 'dd/mm/yyyy',
    onBeforeShow: function(event) {
        $('select').hide();
    },
    onHide: function(event) {
        $('select').show();
    }
});
于 2011-03-08T17:27:53.367 に答える
0

私が探求し始めているactivexメソッドもあります。ie6 の選択ボックスの代わりに ActiveX コントロールを使用するには、条件付きコードを作成する必要があります。この手法を示すデモ スクリプトがあり、ここで詳しく説明されています

更新: Active-X コントロールをユーザーのマシンに配置するには、MS Office が必要なようです。理論的には、何らかの形でそれをどこかに含めることは可能かもしれませんが、それはかなり厄介になっています.

于 2008-11-21T18:45:52.293 に答える