¿Cómo puedo mostrar un mensaje a los navegadores IE6 / IE7 para actualizar a IE8 y hacer que IE8 no muestre la advertencia de IE7?

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

Pregunta

Solo quiero permitir que los usuarios con IE8 (no IE6, IE7) u otro navegador accedan a mi sitio cuando inicien sesión.

Seguí: http://code.google.com/p/ie6- advertencia de actualización / Pero también quería que no permitiera a los usuarios de IE7 usar el sitio principal cuando inicien sesión (pueden ver páginas públicas). La razón es que la aplicación web principal tiene muchos efectos de JavaScript que solo funcionarán al 100% en el modo de representación de IE8 (o cualquier otro navegador aparte de IE).

El problema con la modificación de la advertencia de actualización de ie6 para que sea ie7 es que parecía que IE8 mostraba mi página web en un modo de representación de IE7 y " mentiras " acerca de ser ie7 y activa el código de la hoja de estilo de IE7.

Entonces, ¿cómo puedo forzar a IE8 a que siempre muestre mi página en modo IE8?

¿Fue útil?

Solución

Use esta etiqueta:

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

Otros consejos

Corrección al ejemplo de AdamSane:

  

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

aquí hay un buen enlace que sugiere alguna solución

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

personalmente me gusta la cuarta solución ( http://www.browser-update.org/ )

solo un pedazo de pastel

Personalmente, recomendaría a los usuarios que actualicen IE por razones de seguridad. Usaría un comentario condicional para dirigir los navegadores debajo de 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]-->

Este mensaje debe ser discreto pero elegante. También debe hacer que el sitio web sea utilizable para aquellos que no pueden actualizar sus navegadores.

En lugar de intentar forzar el modo IE 8+, utilizo una combinación de comentarios condicionales y una simple verificación de JavaScript. La propiedad document.documentMode se agregó a IE en la versión 8, por lo que si existe (independientemente del valor, aunque tiene que ser 7 con este código) significa que estamos en modo de compatibilidad y no debería mostrar la advertencia:

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

Aquí está este script genial que funciona para todos los navegadores antiguos:

<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> 

Nota: Si el visitante ignora el consejo, no volverá a aparecer por algún tiempo.

Se puede encontrar más: aquí

Depende de cómo haya codificado su (X) HTML, pero IE8 debería usar el modo estándar (no el modo IE7) si tiene un doctype estricto como:

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

en la parte superior de sus archivos HTML.

Especificaciones XHTML 1.0 - Documentos estrictamente conformes

Aquí hay una buena publicación sobre cómo diferentes tipos de documentos / etc. afectan el modo de renderizado de IE8: Descripción de los modos de compatibilidad en Internet Explorer 8

Probablemente, la mejor manera sería detectar la cadena de agente de usuario del navegador del usuario y redirigirlos a una página que les pida que actualicen (o descarguen un navegador diferente como Firefox o Chrome) si están usando una versión anterior de IE. Puede ver ejemplos de los agentes de usuario de IE 7 y 8 en este entrada del blog del desarrollador de IE . Las versiones anteriores de IE siguen un patrón similar.

Sin embargo, una cosa que no debe hacer es asumir que cualquier cadena de agente de usuario que no siga cierto patrón no es válida. Simplemente verifique MSIE ([0-9]) y vea si está dentro del rango; si falta por completo, suponga que el navegador es compatible. Si se trata de MSIE 7, compruebe el marcador Trident que indica el modo de compatibilidad (y, supongo, pídale al usuario que lo apague). Esto permitirá que otros navegadores nuevos y futuros tengan una gran oportunidad de mostrar su página sin tener que rechazarlos en la puerta :)

Como se ha mencionado, sugeriría que la mejor manera de lograr esto es usar comentarios condicionales para incluir una hoja de estilo específica para todas las versiones de IE anteriores a 8:

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

El CSS incluido podría configurar una advertencia para que sea visible o quizás habilitar una superposición en la página que 'bloquea' a los usuarios. Podría ser una buena idea incluir algunas reglas que oculten elementos importantes en la página que de lo contrario podrían confundir al usuario si no funcionan como se esperaba.

Su otra opción es redirigir al usuario a otra página: no soy un gran fanático de las redirecciones, pero si se usan con cuidado, pueden ser una solución adecuada.

¿Ha considerado por qué está bloqueando la entrada de una gran cantidad de usuarios? Tal vez deberías tomarte el tiempo para descubrir cómo degradar tu JavaScript con gracia o al revés; 'mejorar progresivamente' con JavaScript.

Por otro lado, es posible que tenga control sobre los sistemas utilizados por la organización que usa su sitio, en cuyo caso probablemente esté de acuerdo en bloquear a las personas por usar sistemas no estándar.

Puede usar comentarios condicionales CSS

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

Usando javascript puede preguntar qué navegador ha enviado la solicitud >

<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>

¿Se acabó la fiesta? > <

Lo es, pero creo que la información aquí se puede actualizar un poco.

Según los estándares de hoy, " today " el 29 de octubre de 2013, puede usar esta metaetiqueta para activar los últimos modos de navegador y documento de IE y activar la instalación de Chrome Frame de Google en IE anteriores:

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

Esto le permite al servidor estilos IE6 / 7 específicos. Tenga en cuenta que estoy diciendo 'estilos' no 'hojas de estilo', lo que significa: solo usaría un solo archivo CSS y en él están todos sus estilos IE6 e IE7. Esto es para minimizar las solicitudes HTTP ... pero esa es una conversación totalmente diferente.

De todos modos, con el fragmento de arriba no hay necesidad de scripts o comentarios condicionales.

Nota: Google Chrome Frame se retirará en enero de 2014 - más información aquí .

La idea misma de que estás " prohibiendo " Los usuarios de IE 6 y 7 de su sitio web son ridículos. Mucha gente no puede actualizar su navegador o instalar otro debido a restricciones de trabajo o porque no saben cómo. Prohibir que estas personas usen su sitio solo le costará a los usuarios a largo plazo.

Arregle su JavaScript, solucione los problemas o degrada con gracia para que el sitio funcione bien incluso si está apagado.

EDITAR: publiqué más información en un comentario a continuación que realmente debería estar en esta publicación:

A menudo es posible detectar IE y solucionarlo. Demonios, incluso puedes usar comentarios condicionales para cargar una versión diferente del JavaScript. El uso de un marco JS abstraerá las diferencias entre los navegadores a un nivel del que no debe preocuparse. O simplemente tome IE7.js y pegue eso en el sitio. cosas que funcionan como no lo creerías.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top