2012-01-30 21 views
9

Tôi đang cố gắng phát hiện bằng javascript nếu trang web của tôi đang chạy trên thiết bị di động có thiết bị báo cháy. Tôi đã thử với navigator.userAgent và navigator.appVersion nhưng tôi nhận được kết quả này trên kindle:Làm thế nào tôi có thể phát hiện hỏa hoạn với javascript?

5.0 (Macintosh; U; Intel Mac OS X 10_6_3; vi-us) AppleWebKit/533.16 (Phiên bản KHTML, như Gecko) /5.0 Safari/533,16

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533,16 (KHTML, như Gecko) Version/5.0 Safari/533,16

Tôi có thể sử dụng hình thức những chuỗi đó để biết rằng tôi đang ở trên một chiếc nhẫn và không phải trên thiết bị khác?

Trả lời

6

Các User Agent String cho Kindle Fire là:

Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 

Trong chế độ Silk:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true 
+0

ảnh vui nhộn. Bạn có thể cung cấp một reg cũ mà sẽ làm việc như Kindle cập nhật lên phiên bản mới hơn? – Aaron

+5

Ở trên sẽ không hoạt động ngoài Kindle Fire thế hệ đầu tiên.Nó sẽ được tốt đẹp nếu Amazon bị mắc kẹt với "Kindle Fire" trong chuỗi tác nhân người dùng của họ, nhưng kể từ khi Kindle Fire thế hệ thứ 2, họ đã chuyển sang các từ viết tắt bí ẩn như KFTT, KFJWI và KFJWA. Xem tại đây để biết chi tiết: https://developer.amazon.com/sdk/fire/specifications.html#UserAgentStrings –

7

có hai điều bạn nên kiểm tra cho 1/Silk (hoặc Silk-Accelerated) 2/"Kindle", "KFOT", "KFTT" hoặc những người khác từ bảng tại https://developer.amazon.com/sdk/fire/specifications.html

Trong Silk hoặc pass-through # 1 sẽ cung cấp cho bạn c onfirmation, nếu trang web được truy cập từ một WebView sau đó # 2 sẽ bắt nó

+1

Cảm ơn bạn đã liên kết tham khảo hoàn hảo. – Yaakov

15

trong Javascript,

var ua = navigator.userAgent; 
var isKindle = /Kindle/i.test(ua) || /Silk/i.test(ua) || /KFTT/i.test(ua) || /KFOT/i.test(ua) || /KFJWA/i.test(ua) || /KFJWI/i.test(ua) || /KFSOWI/i.test(ua) || /KFTHWA/i.test(ua) || /KFTHWI/i.test(ua) || /KFAPWA/i.test(ua) || /KFAPWI/i.test(ua); 
if(isKindle) { 
//Your code here 
} 
+2

Phiên bản đặc biệt (và được cập nhật để bao gồm [Kindles hiện tại] (https://developer.amazon.com/appsandservices/solutions/devices/kindle-fire/specifications/01-device-and-feature-specifications) kể từ ngày nhận xét này): '/Kindle|Silk|KFAPW|KFARWI|KFASWI|KFFOWI|KFJW|KFMEWI|KFOT|KFSAW|KFSOWI|KFTBW|KFTHW|KFTT|WFFOWI/i.test (ua)' – ecraig12345

2

Một vấn đề là Amazon thay đổi chuỗi cho mỗi mô hình mới. Bạn chỉ có thể kiểm tra Kindle, Silk và KF * nhưng điều đó có khả năng dẫn đến kết quả dương tính giả. Tôi đã thay đổi mã một chút từ một trong các ví dụ trên để làm cho một chút dễ đọc hơn và dễ bảo trì.

Kể từ ngày 18 tháng 11 năm 2015, mã bên dưới sẽ hoạt động.

Kiểm tra https://developer.amazon.com/sdk/fire/specifications.html cho các kiểu máy mới.

Đây là mã tôi đã viết để chuyển hướng mọi người trò chơi của tôi Luna Puma từ trang web của tôi cho cả điện thoại Kindle Fire và Android:

<script type="text/javascript"> // <![CDATA[ 

    var ua = navigator.userAgent; 

    var kindleStrings = [ 
    "Kindle", 
    "Silk", 
    "KFTT", 
    "KFOT", 
    "KFJWA", 
    "KFJWI", 
    "KFSOWI", 
    "KFTHWA", 
    "KFTHWI", 
    "KFAPWA", 
    "KFAPWI", 
    "KFASWI", 
    "KFTBWI", 
    "KFMEWI", 
    "KFFOWI", 
    "KFSAWA", 
    "KFSAWI", 
    "KFARWI" ]; 

    var isKindle = false; 

    for (index = 0; index < kindleStrings.length; index++) { 
     var matchRegExp = new RegExp (kindleStrings[index]); 
     if (matchRegExp.test (ua)) { 
      isKindle = true; 
      break; 
     } 
    } 

    if (isKindle) { 
     document.location = "amzn://apps/android?asin=B01859LRE0"; 
    } 

    var isAndroid = /Android/i.test (ua); 

    if (isAndroid && !isKindle) { 
     document.location = "https://play.google.com/store/apps/details?id=com.xanamania.lunapuma"; 
    } // ]]> 

</script> 
1

Phát hiện cho dù bạn đang chạy trên một Kindle Fire là phức tạp hơn nhiều hơn là phát hiện các nền tảng khác, vì tác nhân người dùng có thể mặc nhiều ngụy trang.

Tôi đã viết điều này is-mobile component có thể phát hiện xem bạn có đang chạy trên Kindle Fire và các nền tảng khác không.

Hãy nhập nó và sử dụng như trong các ví dụ:

isMobile.Android() => true/false 
isMobile.iOS() => true/false 
isMobile.any() => true/false 
isMobile.KindleFire() => true/false 
isMobile.BlackBerry() => true/false 
Các vấn đề liên quan