2013-08-20 3 views
1

J'ai sous les lignes de code dans ma page jsp.Incompatible IE Erreur de mode de document dans la console?

<!--[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> 

Le code fonctionne très bien dans IE7 et tous les navigateurs. Mais quand j'utilise IE9 il donne ci-dessous l'erreur dans la console IE et la page n'est pas rendue.

LOG: Incompatible IE Mode document

S'il vous plaît aidez-moi.

Merci!

Répondre

1

Le doctype doit être la première ligne de votre fichier HTML. Vous ouvrez également la balise HTML deux fois, une fois dans chacun de vos conditionnels IE, puis encore une fois ci-dessous. Si vous envisagez de prendre en charge d'autres navigateurs que IE, il n'est pas recommandé d'envelopper la balise HTML avec des conditions, car il est impossible de définir la balise HTML pour les autres navigateurs car ils ignorent les commentaires conditionnels.

Une solution consisterait à ajouter toutes les classes à la balise HTML, puis d'importer conditionnellement les fichiers css basés sur la version de IE. Ces fichiers définiront les classes dont vous avez besoin en fonction du navigateur; par exemple ltIE7.css définira la classe .lt-IE7, ltIE8.css définira la classe .lt-IE8, etc.

<!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> 

Ou, si vous ne voulez pas utiliser des fichiers CSS externes, vous pouvez définir les classes en ligne en utilisant des commentaires conditionnels dans le 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

J'utilise des fichiers css externes. Comment puis-je les placer dans un fichier css externe? Merci pour votre réponse ... – user1016403

+0

Vous venez de créer un fichier et de mettre les règles dont vous avez besoin. Par exemple, vous allez créer 'ltIE7.css' et, dans ce fichier, définir la classe' .lt-ie7'. Ensuite, il suffit de l'importer comme je l'ai montré ci-dessus. Assurez-vous que vos chemins de fichier sont corrects, sinon les styles ne seront pas appliqués. – cfs

+0

J'ai placé le doctype dans la première ligne comme vous l'avez dit. mais j'ai toujours la même erreur. cela fonctionne très bien dans IE7. Le problème est avec IE9. – user1016403

Questions connexes