4

多くのクライアントに販売される Web アプリケーションを開発しています。準備ができ次第、製品を購入することを決定したクライアント (銀行) が既に 1 つあります。残念ながら、いくつかの誤解により、彼らが使用している唯一のブラウザーが IE6 であることがかなり遅れて明らかになりました。このアプリケーションは、IE7 より下のものをサポートする必要がないことを念頭に置いて既に開始されています。結果もかなり良好で、IE7/FF/Opera/Safari で十分に使用できます。Chrome ではテストしていませんが、問題はほとんどないと予想されます。残念ながら、結局のところIE6の要件があります...

アプリケーションはまだあまり開発されておらず、デザインもほぼ問題ないので、変更はそれほどひどいものではありません。それでも、多少の手間はかかります。

IE6 の優れた点は、非標準で非常に役立つ 2 つの機能をサポートしていることです。1 つ目は条件付きコメントです。これにより、IE6 専用の CSS/JS ファイルを含めることができます。2 つ目は CSS 式です。つまり、次のようなものです。

input
{
    background-color: expression(this.type='text'?'silver':'');
}

本質的には、CSS 値を JavaScript 式にバインドします。これにより、IE6 がネイティブにサポートしていない多くの CSS 機能を簡単にエミュレートできるようになり、負担が大幅に軽減されます。

残念ながら、IE は JavaScript のパフォーマンスで悪名高いです。これらの表現を使いすぎると、速度が遅くなるのではないかと心配しています。また、銀行がどのコンピュータを使用しているかもわかりません。それはかなり大きなものなので、すべての支店で多種多様なものを期待しています. 単純な数学、三項演算子、およびこの要素/親要素のプロパティの確認など、あまり使用することはないと思います。それでも、IE6_override.CSS ファイルにはこれらが数十個あります。

これは問題になる可能性がありますか?

追加:ああ、これは私が恐れていたものでした. わかりました、欠点を回避するために他のハックをどれだけ使用できるか見ていきます. ありがとう、人々!

4

8 に答える 8

5

式は多くのページ イベントで再評価されるため、過度に使用するとページ全体のパフォーマンスが低下する可能性があります。(それでもなお、再評価が必要になる可能性のあるすべてのイベントに対応できるわけではありません。)

MS は、expression() が誤りであることを認め、今後のブラウザから削除します

一般に、IE6 のさまざまな CSS の欠点に対しては、より優れた個々の JavaScript 回避策があります。

非常に多くの企業がまだ悲惨な IE6 に固執していることは、かなり悲しいことです。プロジェクトの提供が遅れれば、それまでにアップグレードされている可能性があります。

于 2009-02-05T16:10:35.733 に答える
4

継続的な再評価などを回避するだけでなく、希望するスタイルを IE 固有のクラス名にフックして、IE 固有の CSS を維持しやすくするために、IE 式を最適に実行することができます (式自体はおぞましい):

input
{
    1:expression(this.executedExpressions ? void 0 : this.className += (this.type == 'text' ? ' ie-text' : ''));
    2:expression(this.executedExpressions = true);
}

input.ie-text
{
    background-color:silver;
}

IE 式を使用するつもりなら、これが最善の方法です。(私は本当にそれについて徹底的な記事を書くべきです).

于 2009-11-19T09:35:07.657 に答える
2

残念ながら、CSS式はパフォーマンスの面で非常に劣っています。結果は、ページが最初に読み込まれるときだけでなく、ページが読み込まれるたびに常に計算されるためです。式を使用する必要がある場合は、onLoadイベントで標準のJavaScriptを使用することをお勧めします。

詳細については、この記事を参照してください:http ://www.robertnyman.com/2007/11/13/stop-using-poor-performance-css-expressions-use-javascript-instead/

于 2009-02-05T16:00:05.147 に答える
2

CSS 式の動作をエミュレートできるように、CSS セレクターをサポートする任意の JS フレームワークに切り替えることをお勧めします。

この URL を IE6 で開くと、JS フレームワークのパフォーマンスをテストできます。

http://slicktest.perrohunter.com

乾杯

于 2009-02-05T16:51:29.380 に答える
1

はい、IE期間では式が本当に遅いです。それらを回避する方法を見つけてください。

于 2009-02-05T15:59:45.863 に答える
1

自分で試したことはありませんが、IE7-jsは有望に見えます。IE6をIE7と互換性があると主張している

編集:ちなみに、IE6のスタイルをいくつか追加するには、次を使用することもできます

<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="screen"  href="ie6styles.css" />
<![endif]-->

また、IE6 を含むすべてのブラウザーで、いつでも jquery を使用して css プロパティを動的に設定できます。

于 2009-02-05T16:48:21.710 に答える
0

それらを使用する必要がある場合は、IE CSS 式の 1 回限りの実行で見つかった手法が、パフォーマンス (ただしセキュリティではない) の問題を解決するのに役立ちます。

于 2010-08-18T22:25:17.977 に答える