32 votes

Quels sont les facteurs spécifiques qui poussent IE8 à activer le mode de compatibilité?

J'ai une application qui, dans certaines circonstances, les causes IE8 faire apparaitre le message de compatibilité et de le recharger dans compat mode:

un problème d'affichage causé internet explorer pour actualiser la page web à l'aide de l'affichage de compatibilité

C'est rare et ne se produit pas en raison de la méta-tags, aussi loin que je peux dire. Il arrive comme une réponse à l'action de l'utilisateur qui modifie le DOM. C'est le même problème que: http://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-viewmais ma question est: Quels sont les types de choses à cause de cela, comme une aide à le résoudre.

Mettre une autre manière, voir ce site thesitewizard.com, où une troisième cause du mode de compatibilité IE8 est décrit comme:

et, à l'occasion, pour certains, d'autres insondable, sans-papiers raison, sur les pages sont validées comme étant conforme aux normes (ou, au moins, il n' cette Release Candidate 1).

Et la question est: Quel insondable, sans-papiers raisons?

7voto

mtyson Points 1552

Après une longue session de débogage (à l'aide de l'ancienne école des alertes pour identifier ce qui n'était pas où), ce qui semble innocous ligne de manipulation du dom était le coupable:

document.getElementById("literal"+varValue).style.display = "none";

Il n'y a pas d'erreur ici, et l'élément qui a apparemment été trouvée (c'est à dire, ce n'est pas une variété de jardin pointeur null).

C'est une grande échelle d'application, et il y a beaucoup de choses autour de ce code. Je l'ai mis à la suite, et ce qui, apparemment, a empêché la question:

setTimeout(function(){
           var layoutEl = document.getElementById("literal"+varValue);
           if (layoutEl)
               layoutEl.style.display = "none";
       },10)

5voto

Piemol Points 26

Je sais que vous avez déjà votre réponse, mais aujourd'hui j'ai été chercher trop ce qui était à l'origine IE8 pour déclencher le mode de compatibilité. J'ai cherché pour le code JavaScript, css (:d'abord :le dernier, etc), mais il semble être certaines de style en ligne:

max-hauteur en combinaison avec trop-plein..

Donc cela (aussi) déclenche le mode de compatibilité IE8:

style="overflow:scroll;max-height:200px;"

Et ce n'est pas, de sorte qu'il a résolu mon problème:

style="overflow:scroll;height:200px;"

Edit: Je pense que cela est lié: IE8 overflow:auto max-hauteur

5voto

jessegavin Points 20854

Le contenu suivant provient d'un article MSDN "Contrôle de rendu par défaut".


Soyez conscient que certaines conditions, comme ceux énumérés ici, peut forcer Internet Explorer pour afficher les pages dans un document en mode de compatibilité différent de celui spécifié dans la page web.

  • Affichage de compatibilité est activé pour la page.
  • La page est chargée dans la zone Intranet et Internet Explorer est configuré pour utiliser le mode de Compatibilité pour les pages chargées à partir de la zone Internet.
  • La page est chargée de l'utilisateur du système de fichiers local (ce qui signifie que la page est chargée dans la zone Intranet) et Internet Explorer est configuré pour utiliser le mode de Compatibilité pour les pages chargées à partir de la zone Internet.
  • Internet Explorer est configuré pour afficher toutes les sites web dans Affichage de Compatibilité.
  • Internet Explorer est configuré pour utiliser la Liste d'Affichage de Compatibilité, qui spécifie un ensemble de sites web qui sont toujours affichés dans l'Affichage de Compatibilité.
  • Les Outils de développement sont utilisés pour remplacer les paramètres spécifiés dans la page web.
  • La page web a rencontré une mise en page d'erreur et Internet Explorer est configuré pour récupérer automatiquement de telles erreurs grâce à la réouverture de la page dans l'Affichage de Compatibilité.
  • La page contient une Marque du Web qui ordonne qu'il soit chargé dans une zone particulière.

Ces liens fournissent des informations supplémentaires qui décrit la façon dont Internet Explorer détermine le mode de document pour une page web:

2voto

doubleswirve Points 328

Je sais que c'est une vieille question, mais j'ai pensé que je voudrais ajouter quelque chose que je vient de partout. J'ai eu un problème où le mode de compatibilité été forcée et je n'arrivais pas à retrouver la source. J'manuellement prenait la page de mode de compatibilité et remarqué que certains personnages n'étaient pas en train d'apparaître. Il a fini par être une liste à puces qui était en utilisant une mesure de caractère sur un pseudo-élément:

li:before {
  content: '\25B6';
}

Comme une solution rapide, j'ai fini juste d'écraser ce pour IE moins de 9:

.lt-ie9 li:before {
  content: '';
}

Cet article m'a donné l'idée de chercher mauvaise manipulation de caractères. Espérons que cela aide quelqu'un si ils tombent sur un problème similaire!

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