2012-01-30 5 views
9

私のウェブサイトが火災の携帯端末で動作している場合は、javascriptで検出しようとしています。私はnavigator.userAgentとnavigator.appVersionを試してみましたが、この結果は軽いです:Javascriptで炎を検出するにはどうしたらいいですか?

5.0(Macintosh; U; Intel Mac OS X 10_6_3; en-us)AppleWebKit/533.16(GeckoのようなGecko)バージョン/5.0サファリ/ 533.16

のMozilla/5.0(Macintosh版; U;インテルのMac OS X 10_6_3; EN-US)のAppleWebKit/533.16(KHTML、ヤモリなど)のバージョン/ 5.0のSafari/533.16

私はこれらの文字列を使って私が光り輝いていることを知り、他のデバイスではないことを知ることができますか?

答えて

6

Kindleの火災のためのユーザーエージェント文字列は次のとおりです。シルクモードで

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アップデートとして動作するreg exを提供できますか? – Aaron

+5

上記は、第一世代のKindle Fireを超えては機能しません。Kindle、KFJWI、KFJWAのような潜在的頭字語に移ってきたKindle Fire 2世代以来、Amazonが "Kindle Fire"をユーザエージェントの文字列に詰め込んだのはうれしいことでした。詳細はこちらを参照してください:https://developer.amazon.com/sdk/fire/specifications.html#UserAgentStrings –

7

が二つありますが、あなたは 1 /シルク(またはシルクアクセラ) をチェックする必要がありますテーブルから2/"Kindle"、 "KFOT"、 "KFTT"などhttps://developer.amazon.com/sdk/fire/specifications.html

シルクまたはパススルー#1はあなたにcウェブページがWebViewのからアクセスされている場合onfirmation、その後、#2は、それが

+1

完璧なリファレンスリンクありがとうございます。 – Yaakov

15

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

凝縮されたバージョン(このコメント日現在の[現在のKindles](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

2

1つの問題は、Amazonが新しいモデルごとに文字列を変更することです。あなたはKindle、Silk、KF *のみをチェックすることができますが、それは潜在的に偽陽性につながる可能性があります。上記の例のいずれかからコードを少し変更して、読みやすく、保守しやすくしました。

2015年11月18日現在、以下のコードが有効です。

新しいモデルについてはhttps://developer.amazon.com/sdk/fire/specifications.htmlをチェックしてください。

これは私が両方のKindleの火災とAndroid携帯電話のための私のウェブサイトからの私のゲームルナプーマに人々をリダイレクトするために書いたコードです:あなたはKindleの火災で実行しているかどうかを検出

<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と書いてあります。これらの例に示すように

それをインポートして使用すること自由に感じなさい:

isMobile.Android() => true/false 
isMobile.iOS() => true/false 
isMobile.any() => true/false 
isMobile.KindleFire() => true/false 
isMobile.BlackBerry() => true/false 
関連する問題