74 votes

Comment puis-je forcer Internet Explorer à effectuer un rendu en mode standard et NON en mode Quirks ?

Je suis en train de coder un frontal qui fonctionne bien en mode standard IE7 et IE8.

Lorsque je démarre Internet Explorer et que je charge la page, IE7 et IE8 passent directement en mode Quirks. Comment puis-je forcer IE7 et IE8 à toujours charger la page en mode standard ?

Je n'ai pas ajouté de balises méta spéciales jusqu'à présent.

Merci de m'avoir aidé

Edit : Mon doctype et mon head se présentent comme suit pour le moment :

<!DOCTYPE html> 
<html lang="de"> 
<head> 
    <title>...</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta charset="utf-8" />
    <script src="js/html5.js"></script> 

    (...)
</head>

7 votes

Je sais que je suis en retard pour la fête, mais voici une note rapide : si vous définissez le mode de rendu dans les outils de développement d'IE, ce mode sera conservé la prochaine fois que vous chargerez la page. Ainsi, si vous choisissez le mode Quirks, ce mode sera conservé jusqu'à ce que vous le changiez manuellement ou que vous fermiez l'onglet. Alors, profitez-en.

1 votes

Matchu, votre commentaire m'a été précieux. En réglant manuellement le mode de rendu, j'ai complètement raté mes tests ! Merci ! :)

0 votes

À moins que vous n'utilisiez un en-tête http, cela ne fonctionnera pas toujours. stackoverflow.com/a/17258683/200442

87voto

davidkonrad Points 14038

C'est la façon d'être absolument certain :

<!doctype html> <!-- html5 -->
<html lang="en"> <!-- lang="xx" is allowed, but NO xmlns="http://www.w3.org/1999/xhtml", lang:xml="", and so on -->
<head>
<meta http-equiv="x-ua-compatible" content="IE=Edge"/> 
<!-- as the **very** first line just after head-->
..
</head>

Raison :
Chaque fois que l'IE rencontre tout ce qui est qui entre en conflit, il revient au "mode standard d'IE 7", en ignorant les x-ua-compatible .

(Je sais qu'il s'agit d'une réponse à une très vieille question, mais je me suis débattu avec cela moi-même, et le schéma ci-dessus est la bonne réponse. Il fonctionne tout le temps, à chaque fois)

0 votes

@Sameer Alibhai, bien sûr ! C'est tellement implicite que je l'ai oublié ;-) maintenant corrigé .

1 votes

Ce n'est malheureusement pas correct, un serveur web sur le réseau local activera toujours le mode bizarrerie lorsque vous avez tous ces éléments. C'est aussi IE=edge, pas seulement Edge dans le contenu de la balise méta.

0 votes

Vous avez raison au sujet de IE=Edge, encore une fois, il a été écrit à la main :-( Mais vous n'avez PAS raison, ceci es le site solution. Vous devez déclarer le x-ua-compatible comme la toute première ligne.

33voto

Alfabravo Points 4191

Malheureusement, ils veulent que nous utilisions une balise pour indiquer à leur navigateur ce qu'il doit faire. Regardez ce la documentation, elle nous dit de l'utiliser :

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

et il devrait le faire.

3 votes

Cela ne le fera pas sortir du mode quirks ou entrer dans le mode quirks, mais changera seulement le "mode d'émulation". IE6 peut fonctionner en mode non-quirks (ce qui ne veut pas dire qu'il n'est pas très bizarre !).

0 votes

Cela devrait forcer le chargement de la chose en mode standard.

0 votes

Cela fonctionne pour IE8. Cependant, IE7 passe toujours en mode bizarrerie en premier.

11voto

ValidfroM Points 967
  1. Utilisation du doctype html5 au début de la page.

    <!DOCTYPE html>

  2. Forcez IE à utiliser le dernier mode de rendu

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

  3. Si votre navigateur cible est ie8, vérifiez vos paramètres de compatibilité. dans IE8

Je blogue ceci en détail

10voto

Daniel Lane Points 317

L'ajout d'une déclaration doctype correcte et l'évitement du prologue XML devraient suffire à éviter mode bizarrerie .

0 votes

C'est la bonne façon de réaliser la chose, je dois dire. D'une certaine manière, on ne sait pas avec IE...

1 votes

Cela ne fonctionne pas avec IE si vous utilisez votre serveur web sur le réseau local :-(

0 votes

Ce lien vers wikipedia mode bizarrerie, a sauvé ma journée. Je me battais avec ces deux derniers jours et je ne savais vraiment pas ce qui se passait avec moi dans IE. Mais je m'étonne que lorsque je faisais passer mon IE en mode standard, il apparaissait comme suit Document Mode: IE7 standards . Comment puis-je l'obliger à IE9 Standard

9voto

Daniel Little Points 4451

Je sais que cette question a été posée il y a plus de deux ans, mais personne n'en a encore parlé.

La meilleure méthode consiste à utiliser un en-tête http

L'ajout de la balise meta dans l'en-tête ne fonctionne pas toujours, car IE peut avoir déterminé le mode avant qu'elle ne soit lue. La meilleure façon de s'assurer qu'IE utilise toujours le mode standard est d'utiliser un en-tête http personnalisé.

En-tête :

name: X-UA-Compatible  
value: IE=edge

Par exemple, dans une application .NET, vous pouvez placer ceci dans le fichier web.config.

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-UA-Compatible" value="IE=edge" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

1 votes

Ce n'est pas la meilleure, car MS indique que "Si les deux [méta et en-tête] de ces instructions sont envoyées, la préférence du développeur (élément méta) a la priorité sur le paramètre du serveur web (en-tête HTTP)." msdn.microsoft.com/fr/us/library/ff955275%28v=vs.85%29.aspx

1 votes

Cependant, vous devez faire attention car IE peut décider de la valeur X-UA-Compatible avant d'atteindre votre balise Meta. C'est pourquoi l'en-tête reste la meilleure approche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X