【问题标题】:How can I detect kindle fire with javascript?如何使用 javascript 检测 kindle fire?
【发布时间】:2025-11-29 06:25:01
【问题描述】:

我正在尝试使用 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,如 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 上而不是在其他设备上?

【问题讨论】:

    标签: javascript browser-detection kindle-fire


    【解决方案1】:

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

    【讨论】:

    • 精简版(截至本评论日期更新为包含current Kindles):/Kindle|Silk|KFAPW|KFARWI|KFASWI|KFFOWI|KFJW|KFMEWI|KFOT|KFSAW|KFSOWI|KFTBW|KFTHW|KFTT|WFFOWI/i.test(ua)
    【解决方案2】:

    您应该检查两件事 1/ 丝绸(或丝绸加速) 2/ https://developer.amazon.com/sdk/fire/specifications.html 表中的“Kindle”、“KFOT”、“KFTT”或其他人

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

    【讨论】:

    • 感谢您提供完美的参考链接。
    【解决方案3】:

    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
    

    【讨论】:

    • 太棒了。您能否提供一个可以作为 Kindle 更新到较新版本的 reg ex?
    • 以上在第一代 Kindle Fire 之后将无法使用。如果亚马逊在他们的用户代理字符串中坚持使用“Kindle Fire”会很好,但自从 Kindle Fire 第二代以来,他们已经转向了像 KFTT、KFJWI 和 KFJWA 这样的神秘首字母缩略词。详情见这里:developer.amazon.com/sdk/fire/…
    【解决方案4】:

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

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

    查看https://developer.amazon.com/sdk/fire/specifications.html 了解新型号。

    这是我编写的代码,用于将人们从我的网站重定向到我的游戏 Luna Puma,用于 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>
    

    【讨论】:

      【解决方案5】:

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

      【讨论】: