Comment puis-je afficher un message aux navigateurs IE6 / IE7 pour passer à IE8 et que IE8 ne montre pas l'avertissement IE7?

StackOverflow https://stackoverflow.com/questions/822508

Question

Je souhaite uniquement autoriser les utilisateurs dotés d'IE8 (pas IE6, IE7) ou d'un autre navigateur à accéder à mon site lorsqu'ils sont connectés.

J'ai suivi: http://code.google.com/p/ie6- avertissement de mise à niveau / Mais je voulais aussi que les utilisateurs d'IE7 ne puissent pas utiliser le site principal lorsqu'ils sont connectés (ils peuvent afficher les pages publiques). La raison en est que l'application Web principale comporte de nombreux effets JavaScript qui ne fonctionneront qu'à 100% en mode de rendu IE8. (ou tout autre navigateur en dehors d'IE.)

Le problème avec la modification de l'avertissement de mise à niveau de ie6 sur ie7 est qu'il ressemblait à IE8 qui affichait ma page Web dans un mode de rendu IE7 et à " lies " d'être ie7 et déclenche le code de feuille de style IE7.

Alors, comment puis-je forcer IE8 à toujours rendre ma page en mode IE8?

Était-ce utile?

La solution

Utilisez cette balise:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Autres conseils

Correction à l'exemple d'AdamSane:

  

<!--[if lt IE 8]> Special instructions for IE 7 or less here <![endif]-->

voici un bon lien qui suggère une solution

http://garmahis.com/tools/ie6-update-warning/

J'aime personnellement la quatrième solution ( http://www.browser-update.org/ )

juste un morceau de gâteau

Personnellement, je recommanderais aux utilisateurs de mettre à niveau IE pour des raisons de sécurité. J'utiliserais un commentaire conditionnel pour cibler les navigateurs sous IE8.

      <!--[if lt IE 8]>You are using an outdated version of Internet Explorer.  For security reasons you should upgrade your browser. Please go to Windows Updates and install the latest version.<![endif]-->

Ce message doit être discret mais gracieux. Vous devez également rendre le site Web utilisable pour ceux qui ne peuvent pas mettre à niveau leurs navigateurs.

Plutôt que d'essayer de forcer le mode IE 8+, j'utilise une combinaison de commentaires conditionnels et une simple vérification javascript. La propriété document.documentMode a été ajoutée à Internet Explorer dans la version 8. Par conséquent, si elle existe (quelle que soit la valeur, bien qu'elle doive être 7 avec ce code), cela signifie que nous sommes en mode de compatibilité et ne doit pas afficher l'avertissement suivant:

<!--[if lte IE 7]>
    <script>
        if (!document.documentMode) { //if documentMode exists, this is a later IE in compatibility mode
            showBadBrowserMessage();
        }
    </script>
<![endif]-->

Voici ce script intéressant qui fonctionne sur tous les anciens navigateurs:

<script type="text/javascript"> 
    var $buoop = {vs:{i:7,f:5,o:12,s:5,n:9}}; 
    $buoop.ol = window.onload; 
    window.onload=function(){ 
     try {if ($buoop.ol) $buoop.ol();}catch (e) {} 
     var e = document.createElement("script"); 
     e.setAttribute("type", "text/javascript"); 
     e.setAttribute("src", "//browser-update.org/update.js"); 
     document.body.appendChild(e); 
    } 
</script> 

Remarque: si le visiteur ignore l'avis, il n'apparaîtra plus pendant un certain temps.

Plus d'informations peuvent être trouvées: ici

Cela dépend de la manière dont vous avez codé votre (X) HTML. Toutefois, IE8 doit utiliser le mode standard (et non le mode IE7) si vous avez un doctype strict tel que:

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

en haut de vos fichiers HTML.

Spécifications XHTML 1.0 - Documents strictement conformes

Voici un bon article sur la manière dont différents doctypes / etc affectent le mode de rendu d'IE8: Description des modes de compatibilité dans Internet Explorer 8

Le meilleur moyen serait probablement de détecter la chaîne d'agent utilisateur du navigateur de l'utilisateur et de la rediriger vers une page lui demandant de mettre à niveau (ou de télécharger un autre navigateur tel que firefox ou chrome) s'il utilise une ancienne version d'IE. Vous pouvez voir des exemples d’agents utilisateurs d’IE 7 et 8 sur cette entrée de blog de développeur IE . Les anciennes versions d’IE suivent un schéma similaire.

Une chose à ne pas faire, cependant, est de supposer que toute chaîne d'agent d'utilisateur ne respectant pas un certain modèle est non valide. Il suffit de vérifier MSIE ([0-9]) et voir si elle est dans la plage; si elle manque totalement, supposons que le navigateur est pris en charge. S'il s'agit de MSIE 7, vérifiez ensuite que le marqueur Trident indique le mode de compatibilité (et, je suppose, demandez à l'utilisateur de le désactiver). Cela permettra à d’autres futurs navigateurs d’avoir la possibilité de reproduire votre page sans les renvoyer à la porte:)

Comme cela a été mentionné, je dirais que le meilleur moyen d'y parvenir consiste à utiliser des commentaires conditionnels pour inclure une feuille de style spécifique à toutes les versions d'IE antérieures à 8:

<!--[if lt IE 8]> Include CSS here <![endif]-->

Le CSS inclus peut définir un avertissement comme étant visible ou éventuellement activer une superposition sur la page qui "verrouille" les utilisateurs. Il peut être judicieux d’inclure dans la page des règles qui masquent des éléments importants susceptibles de semer la confusion parmi les utilisateurs s’ils ne fonctionnent pas comme prévu.

Votre autre option est de rediriger l'utilisateur vers une autre page. Je ne suis pas un grand fan de redirections, mais si vous l'utilisez avec précaution, elles peuvent constituer une solution adaptée.

Avez-vous pris en compte pourquoi vous bloquez un grand nombre d'utilisateurs de votre site? Peut-être devriez-vous prendre le temps de trouver un moyen de dégrader gracieusement votre JavaScript ou inversement; "améliorer progressivement" avec JavaScript.

D'autre part, vous pouvez avoir le contrôle des systèmes utilisés par l'organisation qui utilise votre site, auquel cas vous êtes probablement en mesure de verrouiller les personnes qui utilisent des systèmes non standard.

Vous pouvez utiliser les commentaires conditionnels CSS

<!--[if IE 8]>
Special instructions for IE 6 here
<![endif]-->

En utilisant javascript, vous pouvez demander quel navigateur a envoyé la demande >

<script type="text/javascript">
function detectBrowser()
{
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
if (browser=="Microsoft Internet Explorer")
  && (version>=8))
  {
  alert("Your browser is good enough!");
  }
  else
  {
  alert("It's time to upgrade your browser!");
  }
  }
 </script>

Cette fête est-elle terminée? > <

Oui, mais je pense que les informations ici peuvent être un peu mises à jour.

Par rapport aux normes actuelles, & "aujourd'hui &"; Depuis le 29 octobre 2013, vous pouvez utiliser cette balise méta pour déclencher les derniers modes de navigateur et de document IE et pour l'installation de Google Chrome Frame dans les anciens IE:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Ceci vous permet de serveur des styles IE6 / 7 spécifiques. N'oubliez pas que je parle de 'styles' et non de 'feuilles de style', ce qui signifie que vous n'utilisez qu'un seul fichier CSS dans lequel figurent tous vos styles IE6 et IE7. Ceci afin de minimiser les requêtes HTTP ... mais c'est une conversation totalement différente.

Quoi qu'il en soit, avec l'extrait de code ci-dessus, aucun script ni commentaire conditionnel n'est nécessaire.

Remarque: la suppression de Google Chrome Frame aura lieu en janvier 2014: plus d'informations ici .

L’idée même que vous êtes & "bannissez &"; Les utilisateurs d'Internet 6 et 7 de votre site Web sont ridicules. Beaucoup de gens ne peuvent pas mettre à jour leur navigateur ou en installer un autre à cause de contraintes de travail ou parce qu'ils ne savent pas comment. Empêcher ces personnes d’utiliser votre site ne vous coûtera que beaucoup d’utilisateurs à long terme.

Corrigez votre code JavaScript, contournez les problèmes ou réduisez-vous en douceur pour que le site fonctionne correctement, même s'il est désactivé.

EDIT: J'ai posté quelques informations supplémentaires dans un commentaire ci-dessous qui devrait vraiment figurer dans ce message:

Il est souvent possible de détecter IE et de le contourner. Enfer, vous pouvez même utiliser des commentaires conditionnels pour charger une version différente de JavaScript. L'utilisation d'un framework JS résoudra les différences entre les navigateurs à un niveau qui ne vous inquiète pas. Ou simplement saisissez IE7.js et collez-le sur le site. les choses fonctionnent comme vous ne le croiriez pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top