0

我的目標是從我的文檔'<head>中刪除IE條件註釋,但是我意識到我仍然需要使用ie6,7,8特定的樣式表(如果我錯了,請糾正我)。添加針對IE瀏覽器的CSS類:JavaScript或條件註釋?

例如,這些IE條件語句中使用由HTML5Boilerplate 3.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標籤(as illustrated here):

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

所以我的問題:什麼缺點使用JavaScript CSS類添加到我的文檔(後果) s的html元素與使用IE條件註釋?

一個效果,我能想到的現在:

  1. IE客戶端可能已禁用了JavaScript。對我來說這不是問題;訪問我的網站的客戶需要啓用JS。

編輯:我要繼續前進,承認添加這些類的最可靠的方法是(可惜)使用IE條件註釋。感謝所有的對話。

+1

爲什麼你的目標是刪除條件註釋?這真的很重要嗎? – AlienWebguy

+0

這完全是個人喜好。如果我可以刪除它們,我會的! =) – Jeff

+0

你將如何檢測,即從JavaScript? – Jashwant

回答

5

另一件事情是,單純的JavaScript並不是一個好主意來完美檢測瀏覽器。您是否聽說過用戶代理欺騙? JavaScript通過用戶代理檢測瀏覽器。但是,如果瀏覽器帶有僞造的用戶代理,則Firefox可以像Chrome一樣行事。希望你明白!

+2

+1,我想知道實際的IE6-8用戶有多少百分比欺騙他們的UA? – Jeff

0

爲什麼你不能添加一個單獨的樣式表與IE特定的設計爲所需的類,而不是添加更多的類到HTML元素。你也可以參考http://paulirish.com/2009/browser-specific-css-hacks/在一個css文件中,你可以將所有瀏覽器定位到css hacks。這也將解決從HTML head標籤

+0

是的,我一直在使用ie-specific樣式表「ie.css」,但我一直在使用IE條件註釋加載它,所以其他瀏覽器不會窒息它。 – Jeff

+0

您可以在我的回答中提及鏈接,其中介紹瞭如何從單個css文件與其他瀏覽器一起定位不同版本的IE。添加和刪​​除類有時是非常討厭的行爲,特別是在IE減慢處理速度的情況下 – user850234

1

從你給同一link移除IE特定條件的您最初的目的,

  1. 你不加載,將不會規則因爲這個瀏覽器不是 。
  2. 您不依賴於可以獨立於CSS關閉的技術。
  3. 您不依賴於語法錯誤可能會暫時中斷瀏覽器檢測的技術。
  4. 浪費瀏覽器時間設置相關類並重新計算各處樣式是沒有意義的。是的,這一次是 基本上不明顯,但從一個'骯髒vs乾淨'的立場我認爲,讓它更骯髒。

我個人認爲,你不應該依靠嗅探userAgent,不應加載不必要的CSS規則只ie