Como posso mostrar uma mensagem para navegadores IE6 / IE7 para atualizar para o IE8 e ter IE8 não mostrar o aviso IE7?

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

Pergunta

Eu quero apenas para permitir que os usuários com IE8 (não IE6, IE7) ou outro navegador para acessar meu site quando logado.

Eu segui: http://code.google.com/p/ie6- atualizar-aviso / Mas eu também queria que não permitem que os usuários do IE7 para usar o site principal quando logado (eles podem visualizar páginas públicas.) A razão é que a principal aplicação web tem um monte de efeitos de JavaScript que só irá funcionar 100% no modo de renderização IE8 (ou qualquer outro navegador além do IE.)

O problema com modificando o IE6 Upgrade de aviso para ser IE7 é que ele parecia IE8 exibida minha página em uma IE7 modo e "mentiras" rendering sobre ser IE7 e desencadeia o código de estilo IE7.

Então, como posso forçar IE8 para sempre tornar minha página no modo IE8?

Foi útil?

Solução

Use esta tag:

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

Outras dicas

Correção para exemplo de AdamSane:

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

aqui é um link bom que sugerem alguma solução

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

pessoalmente, como quarta solução ( http://www.browser-update.org/ )

apenas um pedaço de bolo

Pessoalmente eu recomendaria aos usuários atualizar o IE por razões de segurança. Gostaria de usar um comentário condicional para navegadores de destino abaixo 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]-->

Esta mensagem deve ser discreto, mas elegante. Você também deve fazer o site utilizável para aqueles que não podem atualizar seus navegadores.

Ao invés de tentar forçar o modo IE 8+, eu uso uma combinação de comentários condicionais e um cheque javascript simples. A propriedade document.documentMode foi adicionado ao IE na versão 8, por isso, se é que existe (independentemente do valor, embora tenha que ser 7 com este código) significa que estamos em modo de compatibilidade e não deve mostrar o aviso:

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

Aqui está este script legal que funciona para todos os navegadores antigos:

<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:. Se o visitante ignora o conselho, ela não aparecerá novamente por algum tempo

Mais pode ser encontrado: aqui

Depende de como você codificado o seu (X) HTML, mas IE8 deve usar o modo de padrões (não no modo IE7) se você tiver um doctype strict como:

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

no topo de seus arquivos HTML.

XHTML 1.0 Specs - Documentos rigorosamente de acordo

Aqui está um bom post sobre como diferentes doctypes / etc afetar o modo de renderização do IE8: Compreendendo modos de compatibilidade no Internet explorer 8

Provavelmente a melhor forma seria a de detectar corda navegador User-Agent do usuário e redirecioná-los para uma página pedindo-lhes para atualizar (ou baixar um navegador diferente, como o Firefox ou o Chrome) se eles estão usando uma versão antiga do IE. Você pode ver exemplos dos agentes de usuário do IE 7 e 8 no presente IE desenvolvedor blogue entrada . versões mais antigas do IE seguem um padrão semelhante.

Uma coisa que você não deve fazer, no entanto, é assumir que qualquer cadeia de agente de usuário não seguir um certo padrão é inválido. Basta verificar para MSIE ([0-9]) e ver se ele está na faixa; se ele está totalmente ausente, assume o navegador é suportado. Se for MSIE 7, em seguida, verificação adicional para o modo de Trident marcador indicando compatibilidade (e, suponho, pedir ao usuário para desligá-lo). Isto irá permitir a outros, navegadores futuro iniciantes para ter uma chance de lutar pelo tornando sua página sem transformá-los longe na porta:)

Como já foi mencionado eu sugiro que a melhor maneira de conseguir isso é usar comentários condicionais para incluir uma folha de estilo específica para todas as versões do IE mais cedo do que 8:

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

O CSS incluída pode definir um aviso para ser visível ou talvez permitir uma sobreposição na página de usuários que 'bloqueia' fora. Pode ser uma boa idéia de incluir algumas regras que escondem elementos importantes na página, que poderiam confundir o usuário se eles não funcionam como esperado.

Sua outra opção é para redirecionar o usuário para outra página -. Eu não sou um grande fã de redirecionamentos, mas se usado com cuidado eles podem ser uma solução adequada

Você considerou por você está travando uma grande quantidade de usuários fora de seu site? Talvez você deve tomar o tempo para trabalhar para fora como para degradar tanto graciosamente seu JavaScript, ou o contrário; 'Progressivamente melhorar' com JavaScript.

Por outro lado, você pode ter controle sobre os sistemas utilizados pela organização usando seu site, caso em que você provavelmente está OK pessoas de bloqueio ao usar sistemas fora de padrão.

Você pode usar CSS comentários condicionais

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

Usando javascript você pode perguntar qual navegador enviou o pedido>

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

É este partido sobre? > <

É, mas acho que a informação aqui pode ser atualizado um pouco.

Pelos padrões de hoje, "hoje" ser 29 de outubro de 2013, você pode usar essa tag meta para acionar os modos mais recente do navegador IE e Documentos e acionar a instalação do Google Chrome Frame do Google em IEs mais velhos:

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

Isso permite que você específicas servidor IE6 / 7 estilos. Tenha em mente que eu estou dizendo 'estilos' não 'folhas de estilo', que significa: Você só usaria um único arquivo CSS e nele estão todos os seus estilos IE6 e IE7. Isto é para minimizar solicitações HTTP ... mas isso é uma conversa totalmente diferente.

De qualquer forma, com o acima snippet não há nenhuma necessidade de scripts ou comentários condicionais.

Nota: Google Chrome Frame será aposentado em janeiro de 2014 - mais informações aqui .

A própria idéia de que você está "proibição" IE 6 e 7 usuários de seu site é ridículo. Um monte de gente não pode atualizar seu navegador ou instalar o outro por causa de restrições de trabalho ou porque eles não sabem como. Exceto essas pessoas de utilizar o seu site vai custar-lhe apenas os usuários no longo prazo.

De qualquer corrigir o seu JavaScript, contornar os problemas ou graciosamente degradar para que o site irá funcionar bem, mesmo se ele está desligado.

EDIT: eu postei mais algumas informações em um comentário abaixo que realmente deve ser neste post:

É muitas vezes possível detectar IE e trabalhar em torno dele. Inferno, você ainda pode usar comentários condicionais para carregar uma versão diferente do JavaScript. Usando um quadro JS vai abstrair as diferenças entre os navegadores para um nível que você não precisa se preocupar. Ou simplesmente pegar IE7.js e vara que no site - I ouvir fica coisas que trabalham como você não iria acreditar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top