Preciso de alguma função retornando um valor booleano para verificar se o navegador é Chrome .
Como crio essa funcionalidade?
Preciso de alguma função retornando um valor booleano para verificar se o navegador é Chrome .
Como crio essa funcionalidade?
Respostas:
Atualização: consulte a resposta de Jonathan para obter uma maneira atualizada de lidar com isso. A resposta abaixo ainda pode funcionar, mas provavelmente pode desencadear alguns falsos positivos em outros navegadores.
No entanto, como mencionado, os agentes do usuário podem ser falsificados, portanto, é sempre melhor usar a detecção de recursos (por exemplo, modernizador ) ao lidar com esses problemas, como outras respostas mencionam.
fonte
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
paranavigator.vendor
, portanto, esse método não é à prova de balas, algo como/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
provavelmente funcionaria melhorPara verificar se o navegador é o Google Chrome , tente o seguinte:
Exemplo de uso: http://codepen.io/jonathan/pen/WpQELR
O motivo disso funciona é porque, se você usar o inspetor do Google Chrome e acessar a guia do console. Digite 'janela' e pressione Enter. Então você poderá visualizar as propriedades do DOM para o 'objeto de janela'. Ao recolher o objeto, você pode visualizar todas as propriedades, incluindo a propriedade 'chrome'.
Você não pode mais usar estritamente igual a true para fazer check-in no IE
window.chrome
. O IE costumava retornarundefined
, agora retornatrue
. Mas adivinhe, o IE11 agora retorna indefinido novamente. O IE11 também retorna uma sequência vazia""
parawindow.navigator.vendor
.Eu espero que isso ajude!
ATUALIZAR:
Obrigado a Halcyon991 por apontar abaixo, que o novo Opera 18+ também gera como verdadeiro
window.chrome
. Parece que o Opera 18 é baseado no Chromium 31 . Então eu adicionei uma verificação para garantir quewindow.navigator.vendor
é:"Google Inc"
e não é"Opera Software ASA"
. Também agradecemos a Ring e Adrien Be pelas informações sobre o Chrome 33 que não retornam mais verdade ...window.chrome
agora verifica se não é nulo. Mas preste muita atenção ao IE11, adicionei a verificação de volta,undefined
já que o IE11 agoraundefined
é lançado, como foi o primeiro lançamento .. depois que alguma atualização é criada, ele é geradotrue
.. agora a atualização recente está sendo exibidaundefined
novamente. A Microsoft não consegue se decidir!ATUALIZAÇÃO 24/7/2015 - adição para verificação do Opera
O Opera 30 acabou de ser lançado. Não sai mais
window.opera
. E tambémwindow.chrome
gera true no novo Opera 30. Portanto, você deve verificar se o OPR está no userAgent . Atualizei minha condição acima para explicar essa nova alteração no Opera 30, pois ele usa o mesmo mecanismo de renderização do Google Chrome.ATUALIZAÇÃO 13/10/2015 - adição para verificação do IE
Adicionada verificação para o IE Edge devido à saída
true
parawindow.chrome
.. mesmo que o IE11 produzundefined
parawindow.chrome
. Agradecemos a artfulhacker por nos informar sobre isso!ATUALIZAÇÃO 5/5/2016 - adição à verificação do iOS Chrome
Adicionada verificação para iOS Chrome,
CriOS
devido à saídatrue
para Chrome no iOS. Agradecemos a xinthose por nos informar sobre isso!ATUALIZAÇÃO 18/04/2018 - alterar para verificação do Opera
Verificação editado para Opera, a verificação
window.opr
não éundefined
desde agora Chrome 66 temOPR
nowindow.navigator.vendor
. Agradecemos a Frosty Z e Daniel Wallman por reportarem isso!fonte
Mozilla/5.0 (Linux; Android 8.0.0; ASUS_Z012D Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36
, portanto,isChrome()
retorna false .window.opr
não éundefined
.ainda mais curto:
var is_chrome = /chrome/i.test( navigator.userAgent );
fonte
true
no Microsoft Edge.Uma solução muito mais simples é usar:
O
!!
just converte o objeto em um valor booleano. Em navegadores não Chrome, essa propriedade seráundefined
, o que não é verdade.Observe que isso também retorna verdadeiro para versões do Edge baseadas no Chrome (obrigado @Carrm por apontar isso).
fonte
true
parawindow.chrome
. Confira o conditionizr.com que possui uma correção à prova de balas + detect.!!
converte o valor para ser umtrue
oufalse
.typeof(window.chrome)
dá"object"
, enquantotypeof(!!window.chrome)
dá"boolean"
. Seu exemplo de código também funciona porque aif
instrução faz a conversão.true
para o Edge.fonte
fonte
true
no Microsoft Edge.Você também pode querer a versão específica do Chrome:
Desculpas a The Big Lebowski por usar sua resposta na minha.
fonte
"537.36"
no Microsoft Edge.Você pode usar:
Está trabalhando na v.71
fonte
navigator.userAgent.includes("Chrome")
Funciona para mim no Chrome no Mac. Parece ser ou mais simples ou mais confiável (no caso de uma sequência de caracteres testada pelo userAgent) do que todas as anteriores.
fonte
const isChrome = window.chrome && !window.opr;
O usuário pode alterar o agente do usuário. Tente testar a
webkit
propriedade prefixada nostyle
objeto debody
elementofonte
Verifique isto: Como detectar os navegadores Safari, Chrome, IE, Firefox e Opera?
No seu caso: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
fonte
Conhecer os nomes dos diferentes navegadores da área de trabalho (Firefox, IE, Opera, Edge, Chrome). Exceto o Safari.
Funciona nas seguintes versões do navegador:
Veja a essência aqui e o violino aqui
O snippet de código original não funcionava mais no Chrome e esqueci onde o encontrei. Ele tinha safari antes, mas não tenho mais acesso ao safari, portanto não posso mais verificar.
Somente os códigos Firefox e IE faziam parte do snippet original.
A verificação do Opera, Edge e Chrome é simples. Eles têm diferenças no userAgent.
OPR
só existe no Opera.Edge
só existe no Edge. Portanto, para verificar o Chrome, essa string não deve estar lá.Quanto ao Firefox e IE, não sei explicar o que eles fazem.
Vou adicionar essa funcionalidade a um pacote que estou escrevendo
fonte
todas as respostas estão erradas. "Opera" e "Chrome" são iguais em todos os casos.
(parte editada)
aqui está a resposta certa
fonte
window.chrome.webstore
agora éundefined