Pourquoi Internet Explorer 11 ne respecte-t-il pas les commentaires conditionnels, même en émulant le mode de document Internet Explorer 8?
j'utilise le nouveau Internet Explorer 11 outils de développement pour passer le mode document à" 8", mais les commentaires conditionnels sont encore ignorés, c'est-à-dire qu'ils ne sont pas correctement analysés et se comportent comme des commentaires normaux. Si aucun fichier référencé à l'intérieur du commentaire conditionnel n'est pas requis/chargé par le navigateur.
pourquoi cela arrive-t-il? Est-ce un bug?
Si vous pensez que c'est effectivement un bug qui doit être corrigé, s'il vous plaît entrer et dire que vous aussi pouvez reproduire ceci sur le rapport de bogue de Microsoft qui est rapporté pour ce numéro:
les commentaires conditionnels ne fonctionnent pas lorsque l'on émule les modes de document via les outils de développement F12 .
mise à jour: ce problème a été signalé pour être corrigé dans le rapport de bogue mentionné.
8 réponses
selon à Jacob Rossi [MSFT]
Cela devrait être résolu dans la mise à Jour 1 pour IE11, , publié la semaine dernière .
qui a été publié le 22 avril 2014.
en exécutant quelques tests moi-même, il semble que cela a été corrigé et tout fonctionne à nouveau en douceur pour tester le navigateur le plus étonnant jamais produit...Internet Explorer!
je viens d'essayer de l'utiliser dans Internet Explorer 11 sur Windows 7 pour m'assurer que mon utilisé HTML5 éléments sémantiques étaient en cours de création pour Internet Explorer 8 et ci-dessous (via des commentaires conditionnels), et le navigateur les ignore tout simplement. - _-
cette fonctionnalité a parfaitement fonctionné dans Internet Explorer 10 , et Microsoft a juste dû bricoler avec elle, n'est-ce pas?
<!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->
en dehors de ça, J'apprécie Internet Explorer, ce qui fait un changement.
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 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 */
}
j'ai récemment rencontré le même problème. J'ai également constaté que certains commentaires conditionnels fonctionnent:
-
gt
etlt
ouvré fine -
gte
etlte
n'a jamais travaillé
ainsi une solution potentielle serait de changer les énoncés conditionnels pour utiliser les opérateurs gt
et lt
.
l'autre alternative, que j'ai trouvé plus utile, était d'utiliser un service comme browserstack .
j'ai une autre solution.
Internet Explorer 11 avec le mode de compatibilité Internet Explorer 8 activé contient la chaîne de caractères 'MSIE 8.0', donc:
(exemple PHP)
if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
$head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
}
j'ai eu le même problème - ça m'a rendu dingue toute la matinée. J'ai ajouté Modernizr , et j'ai sélectionné toutes les options, y compris yepnope.js.
donc 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 pour canvas (qui n'est pas supporté avant Internet Explorer 9), donc je charge mon contenu conditionnel. Cela fonctionne maintenant lors de la commutation des modes de navigateur dans Internet Explorer 11 developer tools.
Je ne l'ai pas vu mentionné ici, mais dans ce rapport de bogue il est noté que, si vous changez les paramètres de la vue compatibilité, les commentaires conditionnels fonctionnent comme prévu. So:
- dans IE11, cliquez sur "Outils "
- compatibilité View settings
- Tapez L'URL et cliquez sur Ajouter
semble bien fonctionner maintenant sur mon hôte local. Je n'ai pas testé approfondie, mais peut-être que cela aidera quelqu'un.
certains commentaires conditionnels fonctionnent comme gt
" et lt
", mais par exemple
<!--[if IE 8]>
ne fonctionne pas. Cela est sûrement gênant pour les développeurs qui veulent essayer comment leurs pages Web regarder sur différentes versions de navigateurs Internet Explorer, mais ce n'est pas toutes les mauvaises nouvelles.
bien que les commentaires conditionnels ne fonctionnent pas, vous pouvez toujours tester comment votre page Web regarde dans chacune des versions D'Internet Explorer en ajoutant le 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 Seulement Pour Internet Explorer 9 appelé ' screen-ie9.css
" et une autre seulement pour Internet Explorer 8 appelé ' screen-ie8.css
".
pour tester vos pages Web uniquement pour Internet Explorer 9, Vous pouvez le faire:
<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 la section Emulation de F12 developer tools, définissez 'Document Mode' à '9' et 'User agent string' à 'Internet Explorer 9'. Le Mode Document est la norme Qu'Internet Explorer 9 utilise et la chaîne D'agent utilisateur est le navigateur lui-même.
P. S: je suppose que le " screen.css
" est votre feuille de style de base qui est la raison pour laquelle je l'appelle d'abord que "overwriting" l'Internet Explorer 9 fixe plus tard en appelant " screen-ie9.css
" second.
en faisant ceci, vous pouvez soyez " sûr "(je dois tester avec VMs afin d'écrire le mot " sûr " sans guillemets) que vous visualisez votre page Web sur un navigateur Internet Explorer 9. Lorsque vous avez terminé de tester et de styliser sur Internet Explorer 9, et que vous voulez 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 ceci:
<link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />
donc, il est juste une question D'inconvénients mineurs du côté de Microsoft, mais le nouveau Les outils des développeurs de F12 offrent beaucoup de fonctionnalités étonnantes, ce qui fait que ce n'est pas une grosse affaire.