2011-02-11 63 views
6

昨天晚上我在IE7中調試了一些東西,當我在<!--[if IE7]>...中輸入時發現了這個問題,我發現我看到了<!--[if !IE]>什麼時候會使用<!--[if !IE]>?

現在讓我知道的是,據我瞭解,只有IE認識到這些條件註釋,所以說if NOT IE沒有任何意義,IE看到這個並說「Iam IE,所以這不適用於我?」或者人們對哪些瀏覽器可以識別它感到困惑?

所以我的問題是。

您會在哪裏使用<!--[if !IE]>和它的用途是什麼?

回答

1

據我所知,其他瀏覽器把條件註釋作爲註釋塊(即,它們根本不被解析)。因此,這樣的評論會使事情發生(即包括一個CSS文件)在除Internet Explorer之外的任何東西(所以它是與條件註釋[if IE]相反)。在這些註釋中添加所有的CSS,並查看IE的行爲:P。

[編輯]

好的,我剛查過。這確實很愚蠢。由於<style>標籤位於CC中,因此其他瀏覽器根本無法解析它,因此根本不會包含它。 IE確實將其解釋爲「啊哈,我是IE,所以我需要跳過這個」。我能想到的唯一合理的解釋是微軟假設其他瀏覽器可能開始解析條件註釋。

+1

真的嗎?看起來這樣的評論不會讓任何事情發生,因爲正如你所說,他們不會解析有條件的評論。 IE會看到一個不適用的條件註釋,其他瀏覽器只會看到註釋。 – Chuck 2011-02-11 09:22:51

+0

@Chuck:是的,你是絕對正確的 - >因此我的編輯。 – mingos 2011-02-11 09:23:58

2

我會說這將是,如果你想運行一個腳本,在IE以外所有瀏覽器的工作原理,如IE瀏覽器將不會運行它...

2

爲了確認您的懷疑,在HTML中放置這樣的內容是沒有意義的,因爲大多數或所有瀏覽器都會忽略註釋塊的內容。

它可以想,雖然排除特定的版本,像<時使用否定運算符有用! - [!如果(IE 6)] >將在IE(IE5開始)的所有版本的解析,但不在IE6中。

http://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx

17

你可以用一個特殊的synax使用它:

<!--[if !(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]--> 

這意味着IE忽略的是介於兩者之間,但其他瀏覽器處理的條件註釋爲封閉的評論和解釋之間有什麼在。