Pourquoi Internet Explorer 11 n'honore-t-il pas les commentaires conditionnels même lors de l'émulation du mode document d'Internet Explorer 8?

110

J'utilise les nouveaux outils de développement d' Internet Explorer 11 pour basculer le mode document sur "8", mais les commentaires conditionnels sont toujours ignorés, c'est-à-dire qu'ils ne sont pas correctement analysés et se comportent comme des commentaires normaux. Ainsi, tout fichier référencé dans le commentaire conditionnel n'est pas demandé / chargé par le navigateur.

Pourquoi cela arrive-t-il? Est-ce un bug?

Si vous pensez qu'il s'agit effectivement d'un bogue qui doit être corrigé, veuillez indiquer que vous pouvez également le reproduire dans le rapport de bogue Microsoft signalé pour ce problème: les
commentaires conditionnels ne fonctionnent pas lors de l'émulation des modes de document via F12 Developer Outils .

Mise à jour: ce problème a été signalé comme corrigé dans le rapport de bogue mentionné.

thasmo
la source
18
Me posant la même question! Je sais qu'ils ont abandonné les commentaires conditionnels dans IE10, mais à mon humble avis, l'émulateur devrait les prendre en compte lors des tests pour les navigateurs plus anciens.
Alexander Rechsteiner
12
En effet, cela rend la fonctionnalité inutilisable.
thasmo
3
La vraie question est pourquoi utilisez-vous le mode de compatibilité? Mon conseil est d'éviter le mode compat comme la peste. Il ne convient certainement pas aux tests, quel que soit le problème que vous avez décrit, car il contient des bogues et des bizarreries connus qui remontent à la première introduction du mode compat. Si vous testez la compatibilité descendante, vous devez vraiment utiliser une copie réelle d'IE8 (et d'IE9, etc.). Accédez à modern.ie et téléchargez les VM qu'ils fournissent pour les tests.
Spudley
19
Il y a un bogue ouvert sur le traqueur de bogues d'IE. J'encourage tout le monde à visiter et à dire à Microsoft que vous pouvez reproduire ceci. connect.microsoft.com/IE/feedback/details/806767/…
Evgeny
15
Je pense que l'utilisation du mode de compatibilité pour les tests est plus logique que de télécharger une image d'environ 1/2 gigaoctet pour chaque navigateur. Il y a donc des bogues (et c'est probablement l'un d'entre eux), mais 99% du temps, cela fonctionne.
Rolf

Réponses:

29

selon laJacob Rossi [MSFT]

Cela devrait être corrigé dans la mise à jour 1 pour IE11, publiée la semaine dernière .

Cela a été publié le 22 avril 2014.

En exécutant moi-même quelques tests, il semble que cela ait été corrigé et que tout fonctionne à nouveau correctement pour tester le navigateur le plus étonnant jamais produit ... Internet Explorer!

L84
la source
4
Cela doit être davantage voté. J'ai dû fouiller dans deux réponses de débordement de pile juste pour arriver ici.
Tek
@Lynda: Pourriez-vous publier votre version IE11? le mien est11.0.9600.17631
Mohamed Hussain
1
@MohamedHussain - Ma version est 11.0.9600.17690IC.
L84
3
Vous DEVEZ être sarcastique.
paddotk
À propos d'IE étant le «navigateur le plus étonnant»?
paddotk
20

J'ai juste essayé de l'utiliser dans Internet Explorer 11 sur Windows 7 pour m'assurer que mes éléments sémantiques HTML5 utilisés étaient créés pour Internet Explorer 8 et inférieurs (via des commentaires conditionnels), et le navigateur les ignore tout simplement. -_-

Cette fonctionnalité fonctionnait parfaitement dans Internet Explorer 10 , et Microsoft a juste dû la bricoler, n'est-ce pas?

<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->

En dehors de cela, j'apprécie réellement Internet Explorer, ce qui apporte un changement.

DylRicho
la source
4
Oui, IE 11 est une meilleure expérience, avec toutes les animations qui fonctionnent réellement :). Oui, MS a une histoire de «bricoler» des choses juste au moment où les utilisateurs commencent à s'y habituer. Regardez ce qu'ils ont fait à Windows XP ... "Réparer ce qui n'est pas cassé", diraient certains. Quoi qu'il en soit, ça craint
Rolf
9
Les navigateurs Internet Explorer sont si mauvais. Aucune cohérence entre les versions. Qui diable a développé ça? même ma grand-mère pourrait faire un meilleur travail!
Adrien Be
4
EDIT: ils corrigent
Adrien Be
@AdrienBe Eh bien, c'est certainement un pas dans la bonne direction.
DylRicho
1
@Anthony Ma réponse est incorrecte? Comment? Il s'agit essentiellement de dire ce que vous venez de dire.
DylRicho
17

Cela a fonctionné pour moi et semble être la solution la plus élégante / facile ( Internet Explorer 10 et Internet Explorer 11, je suppose, sont les seuls navigateurs qui prennent en charge -ms-high-contract):

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}
cmartin
la source
Excellent, merci. Quand Microsoft va-t-il tuer ce fouillis?
Kohjah Breese
Réservoir pour cela, IE 11 ne respecte pas l'ancienne méthode conditionnelle. <! - [if IE]>
Gino
8

J'ai récemment rencontré le même problème. J'ai également constaté que certains commentaires conditionnels fonctionnent:

  • gtet lta bien fonctionné
  • gteet lten'a jamais travaillé

Une solution potentielle serait donc de changer les instructions conditionnelles pour utiliser les opérateurs gtet lt.

L'autre alternative, que j'ai trouvée plus utile, était d'utiliser un service tel que Browserstack .

user1429980
la source
8

J'ai une autre solution pour cela.

Internet Explorer 11 avec le mode de compatibilité Internet Explorer 8 activé contient la chaîne «MSIE 8.0», donc:

(Exemple PHP)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}
Andrei Konstantinov
la source
2
J'ai testé les modes de document et il semble ne pas changer l'agent utilisateur?!
mgutt
@mgutt Vous avez raison. Il existe deux options en émulation: le mode Document et l'agent utilisateur. Le mode Document modifie le fonctionnement du navigateur et la manière dont il rend la page, et l'agent utilisateur modifie le navigateur indiquant au site la version du navigateur. (dans mon exemple, c'est la variable $ _SERVER ['HTTP_USER_AGENT'] qui contient cette information) Donc, fondamentalement, vous devez changer ces deux options, par exemple, IE8.
Andrei Konstantinov
@ Andrew Merci. Maintenant, j'ai trouvé le décor. Le problème était la traduction allemande. Ils ont traduit "user agent" par "Zeichenfolge des Benutzer-Agents" et j'ai pensé que cela signifiait le jeu de caractères. Certaines choses ne devraient pas être traduites;)
mgutt
2
Cette solution est la meilleure. Je l'ai converti en ASP.NET MVC Razor et cela fonctionne parfaitement: @ {if (Request.UserAgent.Contains ("MSIE 8.0")) {/ * votre méta-étiquette ici * /}}
Valerio Gentile
Ce site est une référence pratique pour savoir à quoi ressemblent toutes les permutations de chaînes d'agent utilisateur: useragentstring.com/pages/Internet%20Explorer
Drew
4

J'ai eu le même problème - cela m'a rendu fou toute la matinée. J'ai ajouté Modernizr et j'ai sélectionné toutes les options, y compris yepnope.js.

Alors maintenant, mon test ressemble à ceci:

Modernizr.load({
            test: Modernizr.canvas,
            nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
});

Dans ce cas, je teste le canevas (qui n'est pas pris en charge avant Internet Explorer 9), donc je charge mon contenu conditionnel. Cela fonctionne désormais lors du changement de mode de navigateur dans les outils de développement Internet Explorer 11.

El Kabong
la source
Les commentaires conditionnels ne reposent pas sur un script ou sur un code tiers.
Walf
@Walf - vrai, mais ils ne sont pas non plus pris en charge dans IE. Voir ici: msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx
El Kabong
3

Je ne l'ai pas vu mentionné ici, mais dans ce rapport de bogue, il est noté que, si vous modifiez les paramètres d'affichage de compatibilité, les commentaires conditionnels fonctionnent comme prévu. Alors:

  1. Dans IE11, cliquez sur "Outils"
  2. Paramètres d'affichage de compatibilité
  3. Tapez l'URL et cliquez sur Ajouter

Semble fonctionner correctement maintenant sur mon hôte local. Je n'ai pas testé cela de manière approfondie mais peut-être que cela aidera quelqu'un.

Tout simplement haut
la source
Mais les visiteurs de votre site Web devraient faire de même pour obtenir le même résultat. Le rendant inutile.
paddotk
Oui. Mais c'est pour si vous testez d'anciennes versions d'IE via les outils de développement IE11. Donc, en utilisant IE11 mais fonctionnant comme IE8, les commentaires conditionnels ne fonctionneront pas. Pour quelqu'un utilisant réellement IE8, les commentaires conditionnels fonctionneront. Probablement ^ _ ^
Just Plain High
1

Certains des commentaires conditionnels fonctionnent comme « gt» et « lt», mais par exemple <!--[if IE 8]>ne fonctionnent pas. Ce n'est certainement pas pratique pour les développeurs qui souhaitent essayer l'apparence de leurs pages Web sur différentes versions des navigateurs Internet Explorer, mais ce n'est pas une mauvaise nouvelle.

Bien que les commentaires conditionnels ne fonctionnent pas, vous pouvez toujours tester l'apparence de votre page Web dans chacune des versions d'Internet Explorer en ajoutant les feuilles de style une à la fois: disons que vous avez une feuille de style pour Firefox, Chrome, Internet Explorer 10 et Internet Explorer 11 appelé « screen.css», et une autre feuille de style UNIQUEMENT pour Internet Explorer 9 appelée « screen-ie9.css» et une autre UNIQUEMENT pour Internet Explorer 8 appelée « screen-ie8.css».

Pour tester vos pages Web UNIQUEMENT pour Internet Explorer 9, vous pouvez procéder comme suit:

<link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

et dans les outils de développement F12, section Émulation, définissez le «Mode document» sur «9» et la «Chaîne de l'agent utilisateur» sur «Internet Explorer 9». Le mode document est la norme utilisée par Internet Explorer 9 et la chaîne de l'agent utilisateur est le navigateur lui-même.

PS: Je suppose que « screen.css» est votre feuille de style de base, raison pour laquelle je l'appelle d'abord plutôt que «écraser» les corrections d'Internet Explorer 9 plus tard en appelant «screen-ie9.css » en second.

En faisant cela, vous pouvez être "sûr" (je dois tester avec des machines virtuelles pour écrire le mot "sûr" sans guillemets) que vous visualisez votre page Web sur un navigateur Internet Explorer 9. Lorsque vous avez terminé les tests et le style sur Internet Explorer 9 et que vous souhaitez tester avec Internet Explorer 8, vous pouvez facilement faire la même astuce en remplaçant ceci:

<link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />

avec ça:

<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />

Donc, ce n'est qu'une question de désagréments MINEURS du côté de Microsoft, MAIS les nouveaux outils des développeurs F12 offrent BEAUCOUP de fonctionnalités étonnantes, ce qui en fait pas un gros problème.

Roben B
la source