web-dev-qa-db-fra.com

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

J'utilise les nouveaux outils Internet Explorer 11 developer pour passer le mode document à "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, aucun fichier référencé à l'intérieur du commentaire conditionnel n'est demandé/chargé par le navigateur.

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

Si vous pensez que c'est effectivement un bogue qui doit être corrigé, veuillez vous rendre et dire que vous aussi pouvez le reproduire sur le rapport de bogue Microsoft signalé pour ce problème:
Les commentaires conditionnels ne fonctionnent pas lors de l'émulation de modes document via F12 Outils de développement.

Update: Ce problème a été signalé comme étant résolu dans le rapport de bogue mentionné.

111
Thasmo

Selon à Jacob Rossi [MSFT] 

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

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

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

28
L84

J'ai juste essayé d'utiliser ceci dans Internet Explorer 11 sous 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) les ignore tout simplement. -_-

Cette fonctionnalité fonctionnait parfaitement dans Internet Explorer 10 , et Microsoft n’a eu qu’à le bricoler, n’est-ce pas?

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

En dehors de cela, j'aime bien Internet Explorer, ce qui change.

20
DylRicho

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

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* IE10+ specific styles go here */
}
17
cmartin

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', ainsi:

(Exemple PHP)

if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
    $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}
7

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

  • gt et lt a bien fonctionné
  • gte et lte n'ont jamais travaillé

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

L’autre solution, que j’ai trouvée plus utile, consistait à utiliser un service tel que browserstack .

7
user1429980

J'ai eu le même problème - il m'a rendu fou tout le matin. 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 la toile (qui n'était pas prise en charge avant Internet Explorer 9) et je charge donc mon contenu conditionnel. Cela fonctionne maintenant lors du changement de mode de navigateur dans les outils de développement d'Internet Explorer 11.

3
El Kabong

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 localhost. Je n'ai pas testé cela de manière approfondie, mais cela aidera peut-être quelqu'un.

2
Just Plain High

Certains commentaires conditionnels fonctionnent, tels que 'gt' et 'lt', mais par exemple .____<!--[if IE 8]> ne fonctionne pas. C’est sûrement un inconvénient pour les développeurs qui souhaitent connaître 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 l'une après l'autre: supposons que vous ayez 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, procédez 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 Emulation, définissez le "Mode document" sur "9" et la "Chaîne d'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.

P.S: Je suppose que le 'screen.css' est votre feuille de style de base. C'est la raison pour laquelle je l'appelle avant de "remplacer" les correctifs d'Internet Explorer 9 ultérieurement en appelant "screen-ie9.css", ensuite.

En faisant cela, vous pouvez être "sûr" (je dois tester avec des ordinateurs virtuels afin d'écrire le mot "sure" sans guillemets) que votre page Web est affichée 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 chose 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" />

C’est donc un inconvénient mineur de la part de Microsoft, MAIS les nouveaux outils des développeurs de la F12 offrent BEAUCOUP de fonctionnalités étonnantes, ce qui ne rend pas cela très grave.

0
Roben B