2012-01-30 75 views
9

我试图用javascript检测,如果我的网站运行在kindle fire移动设备上。我尝试了navigator.userAgent和navigator.appVersion,但是我在kindle上得到了这个结果:AppleScriptKit/533.16(KHTML,和Gecko一样)Version(0128)(http://support.microsoft.com/kb/312616/en-us/) /5.0 Safari/533.16如何使用javascript检测kindle火焰?

的Mozilla/5.0(在Macintosh; U;英特尔的Mac OS X 10_6_3; EN-US)为AppleWebKit/533.16(KHTML,例如Gecko)版本/ 5.0的Safari/533.16

我可以使用哪些字符串来知道我在kindle而不是其他设备上?

回答

6

用户代理字符串为Kindle Fire的是:

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 

在丝模式:

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

真棒。你能提供一个可以作为Kindle更新到更新版本的注册表吗? – Aaron 2012-08-14 21:20:01

+5

以上将无法超越第一代Kindle Fire。如果亚马逊在用户代理字符串中坚持使用“Kindle Fire”,那将会很不错,但自Kindle Fire第二代起,他们就转向了神秘的首字母缩略词,如KFTT,KFJWI和KFJWA。详情请参阅:https://developer.amazon.com/sdk/fire/specifications.html#UserAgentStrings – 2013-09-06 15:49:29

15
在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

截止此评论日期的精简版(并已更新为包含[当前点燃](https://developer.amazon.com/appsandservices/solutions/devices/kindle-fire/specifications/01-device-and-feature-specifications) ):'/Kindle|Silk|KFAPW|KFARWI|KFASWI|KFFOWI|KFJW|KFMEWI|KFOT|KFSAW|KFSOWI|KFTBW|KFTHW|KFTT|WFFOWI/i.test(ua)' – ecraig12345 2015-09-17 21:01:12

2

一个问题是,亚马逊改变每个新模型的字符串。您只能检查Kindle,Silk和KF *,但这可能会导致误报。我已经改变了上面的一个例子中的代码,使其更易读易维护。

截至2015年11月18日,下面的代码应该可以工作。

检查https://developer.amazon.com/sdk/fire/specifications.html为新模型。

这是我写的人到我的游戏月神彪马重定向从我的网站都的Kindle Fire和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

检测是否你在Kindle Fire的运行情况要复杂得多而不是检测其他平台,因为用户代理可能穿着很多伪装。

我写了这个is-mobile component可以检测你是否在Kindle Fire和其他平台上运行。

随意导入和使用如在这些例子:

isMobile.Android() => true/false 
isMobile.iOS() => true/false 
isMobile.any() => true/false 
isMobile.KindleFire() => true/false 
isMobile.BlackBerry() => true/false