web-dev-qa-db-fra.com

Pourquoi les serveurs Win7 IE fonctionnent-ils en mode IE7?

Sur notre site, nous avons actuellement environ. 50% de nos utilisateurs d'IE7 sous Windows 7. Cependant, Win7 a été publié avec IE8, ce qui signifie que quelque chose ne va pas. Sur cette base, nous avons supposé que les navigateurs modernes IE passaient en mode de compatibilité IE7 sur notre site. Nous avons donc placé la méta-balise "X-UA-Compatible = Edge" sur notre site dans l'espoir d'éliminer le support IE7. Cependant, après une semaine, le pourcentage d'utilisateurs d'IE7 (et d'IE8) a augmenté pour la première fois depuis le début de l'année. Lorsque vous consultez la documentation compatible X-UA, il est destiné à utiliser pour mettre votre site en mode plus ancien.

  • Existe-t-il un autre moyen de s’assurer que IE ne passe pas en mode de compatibilité?
  • Y a-t-il autre chose que nous devons rechercher?

Et oui, nous avons tellement d'utilisateurs sur notre site que nous ne pouvons pas tuer IE7 tant que le nombre de visiteurs uniques ne sera pas réduit.

EDIT: Nous utilisons <!doctype html>

EDIT2: Nous n'avons pas été en mesure de reproduire le mode de compatibilité dans nos environnements

2
Skurpi

Ok, nous avons donc confirmé que nos calculs étaient incorrects. Notre fournisseur nous donnait des rapports basés sur le nombre de "visites". Une visite est calculée en fonction du temps passé par un utilisateur sur notre site Web. Cependant, les utilisateurs d'IE7 peuvent être rares, mais ils risquent de passer plus de temps sur un site Web par rapport à un utilisateur Chrome. Cela signifiait que le pourcentage par lequel nous allions n'était pas basé sur le pourcentage d'utilisateurs avec un navigateur, mais quelque chose comme "combien de temps un utilisateur passe-t-il sur notre site, en fonction du navigateur qu'il utilise".

Nous avons finalement décidé de supprimer le support pour IE7. Le calcul était simple: le temps que notre équipe consacre à l'ajustement du site pour IE7 ne pèse pas le montant des revenus générés par les mêmes utilisateurs. Il est à noter que nous n'allons pas parcourir notre code en une fois et supprimer tous les correctifs que nous avons pour IE7. Au lieu de cela, nous le ferons au fil du temps dans le cadre de notre travail quotidien. Cela signifie que le site fonctionnera toujours pour IE7 pendant une longue période avec seulement des problèmes mineurs. Mais heureusement, au moment où le site deviendra insupportable dans IE7, les derniers pour cent des utilisateurs auront mis à niveau.

La solution actuelle au problème:

Afin de réduire le nombre d'utilisateurs en mode compatibilité, nous avons essayé d'utiliser l'indicateur X-UA-Compatible=Edge. L'indicateur peut être défini à l'aide d'une balise HTML et d'un en-tête de demande. Nous avons essayé les deux, mais cela n’a pas affecté nos chiffres à un niveau remarquable. Si un site a déjà accédé au mode de compatibilité d'un ancien navigateur, il y reste jusqu'à ce que l'utilisateur choisisse activement de passer à la navigation normale. Pour résoudre ce problème, nous avons décidé de faire la même chose que Google+ lorsque les utilisateurs sont dans le même Jam: Affiche une barre en haut de la page à chaque fois que le La page est chargée. Cette barre contient un lien vers des informations sur la procédure à suivre pour quitter le mode de compatibilité d'un site Web. Elle ne disparaîtra pas avant.

Pour vérifier si un utilisateur surfe en mode de compatibilité:

var ua = navigator.userAgent.match(/MSIE [0-9]*/);
var version;

if (ua && document.documentMode !== undefined) {
  version = parseInt(ua[0].replace(/[^0-9]/g, ""));
  if (version !== document.documentMode) {
    alert("Compat mode!");
  }
}

(solution basée sur d'autres questions de stackoverflow. Parmi d'autres: this et this )

2
Skurpi

Existe-t-il un autre moyen de s’assurer que IE ne passe pas en mode de compatibilité? Oui. Utilisez un doctype qui oblige le navigateur à passer en mode standard.

<!DOCTYPE html>

devrait faire l'affaire

0
dave