2013-02-05 42 views
10

Tôi muốn phát hiện bằng javascript trình duyệt android gốc (trình duyệt được cài đặt trên mọi điện thoại Android).Javascript phát hiện trình duyệt gốc android

Tôi nên tìm kiếm gì trong useragent?

+1

Một kích thước không phù hợp với tất cả. Một số điện thoại Android giả vờ là iPhone với tác nhân người dùng của iPhone. – Raptor

+0

Tôi không hiểu "tính năng phát hiện", bạn có thể giải thích? – Razvan

+1

[đại lý người dùng Android googling javascript] (https://www.google.com/search?q=javascript+android+user+agent) - [phát hiện tính năng googling js] (https://www.google.com/ tìm kiếm? q = js + feature + detection) – Trey

Trả lời

15

Điều này sẽ hiệu quả.

var nua = navigator.userAgent; 
var is_android = ((nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 &&  nua.indexOf('AppleWebKit') > -1) && !(nua.indexOf('Chrome') > -1)); 
+0

Điều này dường như không hoạt động trên các trình duyệt mới hơn ... – dvLden

+0

Dường như nó không hoạt động cho Android 4.4+ (chúng đã thay đổi trình duyệt gốc) – Chambeur

-3

Hãy thử một cái gì đó như thế này:

var ua = navigator.userAgent.toLowerCase(); 
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 
if(isAndroid) { 
    // Do something 
} 

hoặc

kiểm tra url này: http://davidwalsh.name/detect-android

+0

Điều này cũng sẽ phù hợp với Firefox trên Android. – fnagel

+0

Tính năng này chỉ phát hiện hệ điều hành - không có gì liên quan đến câu hỏi mà người dùng đã hỏi. – mummybot

3

Xem this page cho một tổng quan về chuỗi tác nhân người dùng khác nhau.

+0

Tôi không chắc tại sao bạn lại bị đánh giá thấp, đó là một nguồn tài nguyên tốt. – nym

8

trình duyệt Native, chúng tôi không thể phát hiện ở những người đầu tiên đi riêng của mình, sử dụng mã nêu trên:

var nua = navigator.userAgent; 
var is_android = ((nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 &&  nua.indexOf('AppleWebKit') > -1) && !(nua.indexOf('Chrome') > -1)); 

như đối với hầu hết các thiết bị chúng tôi đã nhận sau khi tác nhân người dùng cho trình duyệt chrome:

enter image description here

và trong trình duyệt riêng:

enter image description here

Và thực hiện quan sát này cho Samsung Galaxy S3, HTC mong muốn, Asus Zenfone5.



Và phát hiện ra rằng "Chrome/30.0.0.0" hoặc "chrome /" cùng với phiên bản hiện diện cho hầu hết các devces bao gồm Zenfone 5, Samsung Galaxy s3. Nhưng "phiên bản /" không. hiện diện trong đối tượng tác nhân người dùng là quá đủ để phân biệt người gốc và Chrome.

Chúng tôi sử dụng đoạn mã sau:

var ua = navigator.userAgent; 
var is_native_android = ((ua.indexOf('Mozilla/5.0') > -1 && ua.indexOf('Android ') > -1 && ua.indexOf('AppleWebKit') > -1) && (ua.indexOf('Version') > -1)); 

Hope, đó là hữu ích cho bạn quá ... :)

+0

Điều này có còn áp dụng cho trình duyệt gốc của Android 5.1.1 không? Bởi vì tôi có thể nhận được như xa như 'var is_native_android = ua.indexOf (" android ")> -1 && ua.indexOf (" di động ") && ua.indexOf ('chrome')> -1' nhưng tất cả các số nhận dạng khác dường như thất bại. Có vẻ như trình duyệt gốc đang sử dụng AppleWebkit - Mozilla/5.0. – cptstarling

+0

Điều này dường như đang hoạt động trên các trình duyệt cổ phiếu Android cũ cũng như mới hơn. – dvLden

+0

Điều này sẽ không hoạt động trong Android 6.0.1 (ít nhất là không có trên điện thoại T-mobile S6 của Mỹ). Trình duyệt gốc hiện được dựa trên Chrome và thật khó để nói sự khác biệt. Sự khác biệt duy nhất tôi thấy là từ nhà sản xuất cụ thể (đối với tôi nó nói Samsung một vài lần). S7 của bạn tôi thậm chí không còn có trình duyệt gốc nữa, Chrome hiện giờ là trình duyệt gốc cho điện thoại đó. Nhưng điều tốt là tôi đoán nó không quan trọng nữa vì cả hai _should_ đều giống nhau – Francisc0

Các vấn đề liên quan