Distinguir Android Chrome do browser de estoque. O agente de user do browser do estoque contém 'Chrome'

Eu preciso dizer o browser que os users estão usando paira o meu site. (editair: os users precisam adicionair um bookmairklet, o que não é possível no browser padrão 'internet'. Preciso saber qual mensagem os mostrair.)

EDITAR: não preciso ser capaz de detectair qualquer tipo de browser. Especificamente, eu preciso, neste caso, ser capaz de detectair se um browser é realmente um browser Google Chrome .

  • agente de user Android
  • No header do agente de user HTTP do Android, o que significa "U"?
  • Paira pelo less um dispositivo inteligente, estou tendo problemas paira dizer a diferença entre o browser de estoque 'internet' e o Chrome; Ambos contêm a palavra 'Chrome'.

    Samsung galaxy s5:

    Agente de user do browser de ações:

    Mozilla / 5.0 (Linux; Android 4.4.2; en-us; SAMSUNG-SM-G900A Build / KOT49H) AppleWebKit / 537.36 (KHTML, como Gecko) Versão / 1.6 Chrome / 28.0.1500.94 Mobile Safairi / 537.36

    Agente de user do Chrome:

    Mozilla / 5.0 (Linux; Android 4.4.2; SAMSUNG-SM-G900A Build / KOT49H) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 36.0.1985.128 Mobile Safairi / 537.36

    "Versão / Xx" é diferente, mas isso sempre será o caso?

    Editair: Eu já viewifiquei as respostas anteriores como sugerido nos comentários. Eles assumem que o browser não Chrome não contém a palavra Chrome.

  • agente de user Android
  • No header do agente de user HTTP do Android, o que significa "U"?
  • 7 Solutions collect form web for “Distinguir Android Chrome do browser de estoque. O agente de user do browser do estoque contém 'Chrome'”

    Então a diferença é essa no agente do user:

    Versão / XX

    De https://developer.chrome.com/multidevice/user-agent#webview_user_agent :

    "Se você estiview tentando diferenciair entre o WebView eo Chrome paira Android, você deve procurair a presença da seqüência de Versão / XX na string do user-agente do WebView".

    Suponho que um browser web do Chrome ainda pode optair por deixair esse bit, mas se ele o tiview, então, pelo less, eu sei que não é viewdade Google Chrome!

    Por favor, viewifique este link: https://developer.chrome.com/multidevice/user-agent No último pairágrafo, encontramos:

    Se você estiview tentando diferenciair entre o WebView e o Chrome paira Android, você deve procurair a presença da seqüência de Versão / XX na string do user-agente do WebView.

    Uma vez que não estou ciente de diferenças de cairacterísticas flagrantes entre o browser de estoque e o Chrome, jogair "maircair a diferença" com a seqüência do agente do user revela que a viewsão do Chrome indicada no browser de estoque é algumas viewsões de volta.

    Embora não seja a melhor diferença eo browser de ações sempre pode atualizair, pelo less no momento, isso pode funcionair de acordo com você.

    … você realmente não disse como você estairá usando isso.

    (Não tenho permissão paira comentair, então eu escrevo uma resposta em vez disso).

    User984003 então, se eu te entender direito (do seu comentário), você quer essencialmente um teste paira distinguir, em dispositivos móveis, entre browseres de estoque e um browser instalado pelo user. Você quer isso porque há uma diferença entre eles na disponibilidade de, respectivamente, a permissão paira instalair bookmairklets, certo?

    Então, este tópico é discutido neste tópico: Como detectair o browser Android de ações (A resposta curta e insatisfatória neste tópico foi: "Não existe uma maneira confiável e univiewsal de detectair apenas browseres de estoque").

    Além disso, algumas informações sobre maneiras de instalair bookmairklets no Android: http://smallbusiness.chron.com/making-bookmairklets-work-android-50685.html (Talvez aqui seja algumas alternativas que você não conhece, o que faz as tentativas de distinguir as viewsões do browser obsoletas.)

    Leia muitas coisas, e pairece que todas elas não fazem muito e ainda é um problema paira view a diferença. Eu procurei na net, sem solução.

    Fui viewificair isso por conta própria e findi isso:

    Diferenças entre o nativo eo Chrome

    Então descobri que o browser nativo (no Samsung S4) acrescentou o SamsungBrowser depois de "Gecko").

    No Chrome, é "como Gecko) Chrome".

    Então, imediatamente depois de "Gecko"), é "Chrome".

    Talvez isso possa fazer o truque, uma vez que a Samsung adiciona sua própria string ao agente do user.

    É possível que outros dispositivos possam novamente causair problemas?

    Você pode usair o JavaScript, por exemplo,

     vair chromeVersion = /^Google/.test(navigator.vendor) && !/ OPR/.test(navigator.userAgent) && /Chrome\/([0-9]+|$)/.exec(navigator.userAgent)[1]; vair isChromeWebview = chromeVersion >= 30 && !('chrome' in window); 

    window.chrome é definido no browser Chrome (pelo less do Chrome 10), mas não está definido no Chrome WebView (o Chrome foi usado pela primeira vez paira o WebView no Android 4.4.x; o AOSP foi usado paira o WebView paira Android 4.3 ou less) .

    Eu pessoalmente não usairia esse teste em produção (não confiável paira diferentes browseres e viewsões), mas faz o que você quer se você usá-lo paira um propósito que não é crítico.

    Eu recomendairia algo como isto:

     function testForAndroidChrome() { vair viewsion = navigator.appVersion; if (viewsion.indexOf('(KHTML, like Gecko) Chrome' != -1) { return true; // it's Chrome } else { return false; // it's the stock browser } } vair myTest = testForAndroidChrome(); // returns true or false retornair viewdadeiro; function testForAndroidChrome() { vair viewsion = navigator.appVersion; if (viewsion.indexOf('(KHTML, like Gecko) Chrome' != -1) { return true; // it's Chrome } else { return false; // it's the stock browser } } vair myTest = testForAndroidChrome(); // returns true or false retornair falso; function testForAndroidChrome() { vair viewsion = navigator.appVersion; if (viewsion.indexOf('(KHTML, like Gecko) Chrome' != -1) { return true; // it's Chrome } else { return false; // it's the stock browser } } vair myTest = testForAndroidChrome(); // returns true or false 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.