Eu preciso detectar não apenas o tipo de navegador, mas também a versão usando jQuery. Principalmente, preciso descobrir se é o IE 8 ou não.
Não tenho certeza se estou fazendo isso corretamente.
Se eu fizer :
if (jQuery.browser.version >= 8.0) {
dosomething}
Não tenho certeza de que funcionará com a versão 8.123.45.6 ou funcionará?
Editar: Observe que o JQuery 2+ abandonou o suporte para IE8 e abaixo e, portanto, não pode mais ser usado para detectar o IE8. Se estiver usando uma versão atual do JQuery, é necessário usar uma solução não JQuery.
javascript
jquery
Salmane
fonte
fonte
jquery.support.opacity
fez o que eu queria. Obrigado ...jQuery.browser
, não precisa de uma biblioteca extra como Modernizr e não requer edição de HTML (portanto, é adequado para plug-ins, etc.) ...Respostas:
Ele está documentado na documentação da API jQuery . Verifique o Internet Explorer com
$.browser.msie
e, em seguida, verifique sua versão com$.browser.version
.ATUALIZAÇÃO: $ .browser removido do jQuery 1.9
fonte
if(jQuery.browser.version.substring(0, 2) == "8.") { ... }
. Dessa forma, ele funcionará com todas as versões do IE8.jQuery.browser
foi descontinuado em 1.3 e pode ser movido para um plugin no futuro. Consulte os documentos jQuery.browserAcho que a melhor maneira seria esta:
Do padrão HTML5:
em JS:
especialmente desde
$.browser
que foi removido do jQuery 1.9+.fonte
lt-ie9
AOTie8
<html>
vez de<body>
?Isso deve funcionar para todas as versões secundárias do IE8
- atualização
Observe que $ .browser foi removido do jQuery 1.9
fonte
Não se esqueça de que você também pode usar HTML para detectar o IE8.
Ter isso antes de todos os seus scripts permitirá que você apenas verifique a variável "ie" ou qualquer outra coisa.
fonte
document.documentMode é indefinido se o navegador não for IE8,
retorna 8 para o modo padrão e 7 para 'compatível com o IE7'
Se estiver rodando como IE7, há muitos recursos css e dom que não serão suportados.
fonte
if ((document.documentMode || 100) < 9) { // IE8
0
enquanto a página está carregando - "tente determinar o modo de compatibilidade do documento mais tarde" (ou seja, após o documento estar pronto).Assumindo ...
<body>
ou<html>
)... então este é provavelmente o melhor truque (baseado nesta variante não-jQuery, um pouco menos flexível ). Ele cria, testa e remove um comentário condicional apropriado.
(Os comentários condicionais são ignorados no IE10 + 'modo padrão' - mas isso deve funcionar, já que o IE10 + 'modo padrão' não tem um mecanismo de renderização maluco!)
Largue esta função:
Em seguida, use-o assim:
Também sugiro armazenar em cache os resultados dessa função para que você não precise repeti-la. Por exemplo, você pode usar a string
(comparison||'')+' IE '+(version||'')
como uma chave para armazenar e verificar o resultado desse teste em um objeto em algum lugar.fonte
Nota:
1) $ .browser parece ter sido descartado no jQuery 1.9+ (conforme observado por Mandeep Jain). É recomendado usar .support .
2) $ .browser.version pode retornar "7" no IE> 7 quando o navegador está no modo de "compatibilidade".
3) A partir do IE 10, os comentários condicionais não funcionarão mais.
4) jQuery 2.0+ deixará de oferecer suporte para IE 6/7/8
5) document.documentMode parece estar definido apenas nos navegadores Internet Explorer 8+. O valor retornado informará em qual modo de "compatibilidade" o Internet Explorer está sendo executado. Ainda não é uma boa solução.
Tentei várias opções .support (), mas parece que quando um navegador IE (9+) está no modo de compatibilidade, ele simplesmente se comporta como o IE 7 ... :(
Até agora, eu só descobri que isso funcionava (tipo-a):
(se documentMode não estiver definido e htmlSerialize e opacity não forem suportados, então provavelmente você está olhando para o IE <8 ...)
fonte
Se você mexe com as versões do navegador, muitas vezes não dá certo. Você não quer implementá-lo sozinho. Mas você pode Modernizr feito por Paul Irish e outras pessoas inteligentes. Ele detectará o que o navegador realmente pode fazer e colocará as classes apropriadas no
<html>
elemento. No entanto, com o Modernizr , você pode testar a versão do IE assim:Da mesma forma, você pode usar
.lt-ie8
e.lt-ie7
.fonte
Você também deve olhar para jQuery.support . A detecção de recursos é muito mais confiável do que a detecção do navegador para codificar sua funcionalidade (a menos que você esteja apenas tentando registrar as versões do navegador).
fonte
Você pode detectar facilmente qual tipo e versão do navegador, usando este jquery
fonte
Aqui está o plugin de detecção de navegador Jquery para identificar a detecção de navegador / sistema operacional.
Você pode usar isso para fins de estilização após incluir o plugin.
fonte
Você pode usar $ .browser para detectar o nome do navegador. os valores possíveis são:
ou obter um sinalizador booleano: $ .browser.msie será verdadeiro se o navegador for MSIE.
quanto ao número da versão, se você estiver interessado apenas no número da versão principal - você pode usar parseInt ($. browser.version, 10). não há necessidade de analisar a string $ .browser.version por conta própria.
De qualquer forma, a propriedade $ .support está disponível para detecção de suporte para recursos específicos, em vez de depender de $ .browser.
fonte