Estou chamando uma função como a abaixo clicando em divs com uma determinada classe.
Existe uma maneira de verificar ao iniciar a função se um usuário está usando o Internet Explorer e abortar / cancelar se estiver usando outros navegadores para que seja executado apenas para usuários do IE? Os usuários aqui estariam no IE8 ou em versões superiores, portanto não precisaria cobrir o IE7 e versões inferiores.
Se eu pudesse dizer qual navegador eles estão usando, isso seria ótimo, mas não é necessário.
Exemplo de função:
$('.myClass').on('click', function(event)
{
// my function
});
javascript
jquery
internet-explorer
browser-detection
user2571510
fonte
fonte
With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)
. Desculpe, mas esta loucura deve terminar em algum momento e de alguma forma ...Respostas:
Use o método JavaScript abaixo:
Você pode encontrar os detalhes abaixo no site de suporte da Microsoft:
Como determinar a versão do navegador a partir do script
Atualização: (suporte ao IE 11)
fonte
if (msie > 0)
é enganosa. Se o valor não for encontrado, a função indexOf () retornará -1 e não 0. Portanto,if (msie > -1)
seria mais explicativo.IE 11
: stackoverflow.com/a/21712356/114029/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)
Sei que isso funciona nos dias 10 e 11. Se você puder verificar o <IE9 e Edge, edite a resposta.Alguns anos depois, o navegador Edge agora usa o Chromium como mecanismo de renderização.
Infelizmente, verificar o IE 11 ainda é uma coisa.
Aqui está uma abordagem mais direta, pois as versões antigas do IE deveriam desaparecer.
Aqui está a minha resposta antiga (2014):
No Edge, a sequência do agente do usuário foi alterada.
Uso da amostra:
Sequência padrão do IE 10:
Sequência padrão do IE 11:
Sequência padrão do Edge 12:
Sequência padrão do Edge 13 (thx @DrCord):
Sequência padrão do Edge 14:
Sequência padrão do Edge 15:
Sequência padrão do Edge 16:
Sequência padrão do Edge 17:
Sequência padrão do Edge 18 (visualização privilegiada):
Teste no CodePen:
http://codepen.io/gapcode/pen/vEJNZN
fonte
Se tudo o que você deseja saber é se o navegador é IE ou não, faça o seguinte:
Atualização 1: Um método melhor
Eu recomendo isso agora. Ainda é muito legível e tem muito menos código :)
Obrigado a JohnnyFun nos comentários pela resposta abreviada :)
Atualização 2: Testando o IE em CSS
Primeiramente, se você puder, use
@supports
instruções em vez de JS para verificar se um navegador suporta um determinado recurso CSS.(Observe que o IE não oferece suporte
@supports
e ignorará todos os estilos inseridos em uma@supports
instrução.)Se o problema não puder ser resolvido
@supports
, faça o seguinte:(Nota:
classList
é relativamente novo para JS e acho que, fora dos navegadores do IE, ele funciona apenas no IE11. Possivelmente também no IE10.)Se você estiver usando SCSS (Sass) em seu projeto, isso poderá ser simplificado para:
Atualização 3: Adicionando Microsoft Edge (não recomendado)
Se você também quiser adicionar o Microsoft Edge à lista, faça o seguinte. No entanto, eu não o recomendo, pois o Edge é um navegador muito mais competente que o IE.
fonte
ms_ie = !!ua.match(/MSIE|Trident/)
~
tem algum significado?Isso retorna
true
para qualquer versão do Internet Explorer:O
userAgent
parâmetro é opcional e o padrão é o agente do usuário do navegador.fonte
É assim que a equipe do Angularjs está fazendo isso ( v 1.6.5 ):
Existem várias linhas de código espalhadas por todo o uso como um número, como
e
fonte
document.documentMode
é suportado pelo IE8 +. Será'undefined'
para Edge ou Chrome / FireFox .... Alterei esse código paravar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);
que ele retorne a versão exata do IE para o IE8 +, 99 para navegadores que não sejam o IE (geralmente será um navegador moderno) e 1 para o IE5-7 antigo. Isso está escrito porque geralmente precisamos de trabalho especial apenas para alguns IE mais antigos. Então,if (IEver < 9) { ... }
significa que se é um IE antigoVocê pode usar o objeto navigator para detectar o usuário-navegador, não precisa do jquery
http://www.javascriptkit.com/javatutors/navigator.shtml
fonte
Usando as respostas acima; retorno booleano simples e condensado:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
fonte
Método 01:
$ .browser foi descontinuado no jQuery versão 1.3 e removido no 1.9
Método 02:
usando comentários condicionais
Método 03:
Método 04:
usar JavaScript / detecção manual
Link de referência
fonte
.ie10
classe é uma das melhores opções se você estiver fazendo alguma correção de css para ie10 apenas. Como o Internet Explorer 10 adiciona".ie10"
classe para elemento HTML<html class="ie10">
, então você pode usá-lo como.ie10 .myclass {//some css here}
Eu só queria verificar se o navegador era IE11 ou mais antigo, porque bem, eles são uma porcaria.
fonte
fonte
Usando modernizr
fonte
Ou esta versão realmente curta retorna true se o navegador for o Internet Explorer:
fonte
Outra função simples (ainda legível por humanos) para detectar se o navegador é IE ou não (ignorando o Edge, o que não é nada mau):
fonte
Se você não quiser usar o useragent, também poderá fazer isso para verificar se o navegador é o IE. O código comentado é executado nos navegadores do IE e transforma o "falso" em "verdadeiro".
fonte
Sei que essa é uma pergunta antiga, mas, caso alguém se depare com ela novamente e tenha problemas com a detecção do IE11, aqui está uma solução para todas as versões atuais do IE.
fonte
eu usei isso
fonte
Muitas respostas aqui e gostaria de adicionar minha opinião. O IE 11 estava sendo tão burro em relação ao flexbox (veja todos os seus problemas e inconsistências aqui ) que eu realmente precisava de uma maneira fácil de verificar se um usuário está usando algum navegador IE (até 11 inclusive), mas excluindo o Edge, porque o Edge é realmente muito bom.
Com base nas respostas dadas aqui, escrevi uma função simples retornando uma variável booleana global que você pode usar posteriormente. É muito fácil verificar o IE.
Dessa forma, você só precisa procurar uma vez e armazena o resultado em uma variável, em vez de precisar buscar o resultado em cada chamada de função. (Pelo que sei, você nem precisa esperar pelo documento pronto para executar esse código, pois o user agent não está relacionado ao DOM.)
fonte
Tente isso se você estiver usando a versão jquery> = 1.9 ,
Se o jQuery versão <1.9 ($ .browser foi removido no jQuery 1.9), use o seguinte código:
fonte
A solução do @ SpiderCode não funciona com o IE 11. Aqui está a melhor solução que usei a partir de agora no meu código, onde eu preciso de detecção do navegador para um recurso específico.
O IE11 não relata mais como MSIE. De acordo com esta lista de alterações, é intencional evitar a detecção incorreta.
O que você pode fazer se realmente deseja saber que é o IE é detectar o Trident / string no agente do usuário se navigator.appName retornar o Netscape, algo como (o não testado);
Graças a esta resposta
fonte
Abaixo, encontrei uma maneira elegante de fazer isso enquanto pesquisava no Google ---
fonte
Atualize a resposta do SpiderCode para corrigir problemas em que a string 'MSIE' retorna -1, mas corresponde a 'Trident'. Ele costumava retornar NAN, mas agora retorna 11 para essa versão do IE.
fonte
Você pode detectar todo o Internet Explorer (última versão testada 12).
Veja aqui https://jsfiddle.net/v7npeLwe/
fonte
Você deve ver o resultado no console, use o chrome Inspecionar.
fonte
Coloquei esse código na função de documento pronto e ele só é acionado no Internet Explorer. Testado no Internet Explorer 11.
fonte
Isso funciona apenas abaixo da versão do IE 11.
console.log("version number",ie_version);
fonte
Função JavaScript para detectar a versão do Internet Explorer ou Edge
fonte
Necromante.
Para não depender da string do agente do usuário, verifique algumas propriedades:
Além disso, isso detecta o novo Chredge (Anaheim):
E isso detecta cromo:
E este Safari:
fonte
Tente fazer assim
fonte
Acho que vai te ajudar aqui
fonte
Você pode usar
$.browser
para obter informações de nome, fornecedor e versão.Consulte http://api.jquery.com/jQuery.browser/
fonte