2013-08-20 53 views
1

我在我的jsp頁面中有下面幾行代碼。控制檯中IE文檔模式不兼容錯誤?

<!--[if lt IE 7]><html lang="en" class="no-js lt-ie10 lt-ie9 lt-ie8 lt-ie7" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]--> 
<!--[if IE 7]><html lang="en" class="no-js lt-ie10 lt-ie9 lt-ie8" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]--> 
<!--[if IE 8]><html lang="en" class="no-js lt-ie10 lt-ie9" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]--> 
<!--[if IE 9]><html lang="en" class="no-js lt-ie10" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]--> 
<!--[if gt IE 9]><!--><html lang="en" class="no-js" xmlns="http://www.w3.org/1999/html" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <!--<![endif]--> 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 

    //some code 

</html> 

該代碼在IE7和所有瀏覽器中都能正常工作。但是,當我使用IE9它給出了IE控制檯中的錯誤,並且頁面沒有呈現。

LOG:不兼容IE文檔模式

請幫助我。

謝謝!

回答

1

doctype必須是HTML文件的第一行。您還將打開HTML標記兩次,每次在您的IE條件中,然後再次在下面打開。

如果您打算支持IE以外的瀏覽器,那麼用條件包裝HTML標籤並不是一個好的解決方案,因爲沒有辦法爲其他瀏覽器定義HTML標籤,因爲它們會忽略條件註釋。

一個解決方案是將所有類添加到HTML標記,然後根據IE的版本有條件地導入css文件。這些文件將根據瀏覽器定義您需要的類;例如ltIE7.css將定義.LT-IE7類,ltIE8.css將定義.LT-IE8類等

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd"> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

<html class="no-js lt-ie10 lt-ie9 lt-ie8 lt-ie7" lang="en" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head> 
     <!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="ltIE7.css"/><![endif]--> 
     <!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="ltIE8.css"/><![endif]--> 
     <!--[if lt IE 9]><link rel="stylesheet" type="text/css" href="ltIE9.css"/><![endif]--> 
     <!--[if lt IE 10]><link rel="stylesheet" type="text/css" href="ltIE10.css"/><![endif]--> 
    </head> 
    <body> 
     ... 
    </body> 
</html> 

或者,如果你不想使用外部CSS文件,你可以定義類內聯使用條件註釋在head

<style type="text/css"> 
    <!--[if lt IE 7]> 
     .lt-ie7 {...} 
    <![endif]--> 
    <!--[if lt IE 8]> 
     .lt-ie8 {...} 
    <![endif]--> 
    <!--[if lt IE 9]> 
     .lt-ie9 {...} 
    <![endif]--> 
    <!--[if lt IE 10]> 
     .lt-ie10 {...} 
    <![endif]--> 
</style> 
+0

我正在使用外部的css文件。我如何將它們放在外部的css文件中?感謝您的回覆... – user1016403

+0

您只需創建一個文件並將所需的規則放入其中即可。例如,您將創建'ltIE7.css'並在該文件中定義'.lt-ie7'類。然後就像我上面顯示的那樣導入它。確保你的文件路徑是正確的,否則樣式不會生效。 – cfs

+0

我把doctype放在第一行,就像你說的。但仍然有相同的錯誤。它在IE7中正常工作。問題在於IE9。 – user1016403