0

私の目標は、ドキュメントからIEの条件付きコメントを削除することです<head>が、それでもie6,7,8固有のスタイルシートを使用する必要があることを認識しています(間違っている場合は修正してください)。

たとえば、これらのIE条件はHTML5Boilerplate3.0で使用されます。

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>   <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

その代わりに、JavaScriptを使用してhtmlタグにクラスを追加したいと考えています(ここに示すように)。

<html lang="en" class="ie6 ie7 ie8">

だから私の質問: JavaScriptを使用してCSSクラスをドキュメントのhtml要素に追加することとIEの条件付きコメントを使用することの欠点(結果)は何ですか?

私が今考えることができる1つの効果:

  1. IEクライアントでJavaScriptが無効になっている可能性があります。私にとって、これは問題ではありません。私のサイトにアクセスするクライアントは、JSを有効にする必要があります。

編集:先に進んで、これらのクラスを追加する最も信頼できる方法は、(悲しいことに)IE条件付きコメントを使用することであることを認めます。ダイアログをありがとう。

4

3 に答える 3

5

もう1つは、JavaScriptだけでは、ブラウザーを完全に検出することはできません。ユーザーエージェントのなりすましについて聞いたことがありますか?JavaScriptは、ユーザーエージェントによってブラウザを検出します。ただし、ブラウザになりすましのユーザーエージェントが付属している場合、FirefoxはChromeのように機能します。あなたがそれを手に入れることを願っています!

于 2012-06-28T18:11:51.913 に答える
1

あなたが与えたのと同じリンクから、

  1. このブラウザ用ではないため、適用されないルールをロードしません。
  2. CSSとは独立してオフにできるテクノロジーに依存する必要はありません。
  3. 構文エラーによってブラウザの検出が一時的に中断される可能性があるテクノロジに依存することはありません。
  4. 関連するクラスを設定し、あらゆる場所でスタイルを再計算するためにブラウザの時間を無駄にすることに意味はありません。はい、今回は本質的に目立たないですが、「汚れvsクリーン」の観点からすると、汚れがひどくなると思います。

個人的には、スニッフィングに頼るuserAgentべきではなく、不要なcssルールをロードするieだけではいけないと思います。

于 2012-06-28T18:40:43.417 に答える
0

html要素にクラスを追加する代わりに、必要なクラスにIE固有のデザインの個別のスタイルシートを追加できないのはなぜですか。http://paulirish.com/2009/browser-specific-css-hacks/を参照することもできます。ここでは、1つのcssファイルで、cssハックを使用してすべてのブラウザーをターゲットにできます。これにより、HTMLヘッドタグからIE固有の条件を削除するという最初の目的も解決されます。

于 2012-06-28T18:21:35.977 に答える