2013-08-20 2 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 Document

Пожалуйста, помогите мне.

Спасибо!

ответ

1

Документ должен быть первой строкой в ​​вашем файле HTML. Вы также дважды открываете тег HTML, один раз в каждом из ваших условных выражений IE, а затем еще раз ниже.

Если вы планируете поддерживать браузеры, отличные от IE, то обертывание HTML-тега с помощью условных выражений не является хорошим решением, потому что нет способа определить тег HTML для других браузеров, поскольку они будут игнорировать условные комментарии.

Одним из решений было бы добавить все классы в тег HTML, а затем условно импортировать css-файлы на основе версии IE. Эти файлы будут определять классы, которые вам нужны, на основе браузера; например 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 файлы, вы можете определить классы inline с использованием условных комментариев в 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

Смежные вопросы