Les différents mode d'affichage
Bien que le nouveau mode d'affichage soit de loin le plus évolué,
Internet Explorer 8 peut néanmoins utiliser des modes d'affichage plus anciens.
Le mode d'affichage utilisé appelé documentMode peut être consulté en javascript
dans l'attribut document.documentMode. Voici la liste des valeurs possibles :
- 8 : standard IE 8
- 7 : émulation IE 7
- 5 : émulation du mode quirks d'IE 5
Le navigateur passe automatiquement en mode 5
pour tous les documents ne comportant pas de DOCTYPE.
Le basculement entre les modes 7 et 8 n'est pas automatique,
mais il peut être forcé soit par l'utilisateur, soit par le serveur.
Émulation IE 7 [modifier]
Quand le navigateur est dans ce mode, il se comporte comme IE7
tant pour l'analyse du document, son affichage que pour l'analyse du javascript.
Ce qui inclut :Différences entre IE7 et son émulation par IE8 :
- dans les commentaires conditionnels, le navigateur se considère comme IE 7.
Le test [if IE 8], par exemple, renvoie une réponse négative.- l'analyse des CSS se fait comme IE7
- les fonctions javascript introduites par IE8 sont inconnues
et celles dont le comportement a été modifié par IE8
reprennent leur comportement précédent.
- la propriété javascript document.documentMode est définie,
et elle vaut 7 (alors que pour IE7 natif, elle est indéfinie)- la propriété javascript navigator.appName ainsi que le User Agent de IE8
contiennent la sous-chaîne Trident/4.0 (quel que soit le mode de fonctionnement).
Tu connaisAlors comment que j'fais, moi, docteur ?
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.La meilleure solution consiste à installer des machines virtuelles Windows avec la version d'IE voulue : tu as la garantie d'avoir affaire à un vrai IE dans sa vraie version.Tu connaisAlors comment que j'fais, moi, docteur ?
Code : Tout sélectionner
IsIE8Browser = function() {
var rv = -1;
var ua = navigator.userAgent;
var re = new RegExp("Trident\/([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) {
rv = parseFloat(RegExp.$1);
}
if(rv == 4) {
return true;
} else {
return false;
}
}
IsIE8emuIE7Browser = function() {
var browser = navigator.appVersion;
if(browser.indexOf('MSIE 7.0') > -1) {
if(!XDomainRequest) {
return false;
} else {
return true;
}
}
}
Code : Tout sélectionner
if(rv == 4) {
return true;
} else {
return false;
} Code : Tout sélectionner
return (rv == 4);