10

我正在尝试使用 javascript 检测我的网站是否在 kindle fire 移动设备上运行。我试过 navigator.userAgent 和 navigator.appVersion 但我在 kindle 上得到了这个结果:

5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) 版本/5.0 Safari/533.16

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16

我可以从这些字符串中使用什么来知道我在 kindle 上而不是在其他设备上?

4

5 回答 5

16

在 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
}
于 2014-01-08T23:56:30.523 回答
7

您应该检查两件事 1/ Silk(或 Silk-Accelerated) 2/“Kindle”、“KFOT”、“KFTT”或https://developer.amazon.com/sdk/fire/上的表格中的其他内容规范.html

在 Silk 或 pass-through #1 中应该给你确认,如果从 WebView 访问网页,那么 #2 将捕获它

于 2012-09-28T21:25:34.563 回答
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

在 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
于 2012-01-30T11:56:51.057 回答
2

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

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

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

这是我为 Kindle Fire 和 Android 手机将人们从我的网站重定向到我的游戏 Luna Puma 编写的代码:

<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>
于 2015-11-18T18:35:13.457 回答
0

Silk User-Agent 和用于检测 Silk 的示例 JavaScript 代码可在博客上找到:http: //amazonsilk.wordpress.com/useful-bits/silk-user-agent/

于 2013-02-02T02:55:50.317 回答