2012-01-30 16 views
9

यदि मेरी वेबसाइट एक किंडल फायर मोबाइल डिवाइस पर चल रही है तो मैं जावास्क्रिप्ट से पता लगाने की कोशिश कर रहा हूं। मैंने navigator.userAgent और navigator.appVersion के साथ प्रयास किया है, लेकिन मुझे यह परिणाम जलाने पर मिलता है:मैं जावास्क्रिप्ट के साथ जल आग का पता कैसे लगा सकता हूं?

5.0 (मैकिंटोश; यू; इंटेल मैक ओएस एक्स 10_6_3; एन-हम) ऐप्पलवेबकिट/533.16 (केएचटीएम, जैसे गीको) संस्करण /5.0 सफारी/533,16

और

मोज़िला/5.0 (Macintosh; यू; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, छिपकली की तरह) संस्करण/5.0 सफारी/533,16

मैं उन स्ट्रिंग्स का उपयोग कैसे कर सकता हूं यह जानने के लिए कि मैं एक किंडल पर हूं और अन्य डिवाइस पर नहीं?

उत्तर

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

बहुत बढ़िया। क्या आप एक reg ex प्रदान कर सकते हैं जो नए संस्करणों के लिए किंडल अपडेट के रूप में काम करेगा? – Aaron

+5

उपरोक्त पहली पीढ़ी किंडल फायर से परे काम नहीं करेगा।अगर अमेज़ॅन अपने उपयोगकर्ता एजेंट स्ट्रिंग्स में "किंडल फायर" से फंस गया तो अच्छा होगा, लेकिन जब सेंडल फायर दूसरी पीढ़ी के बाद से वे केएफटीटी, केएफजेडब्ल्यूआई और केएफजेडब्ल्यूए जैसे गुप्त शब्दकोष में चले गए हैं। विवरण के लिए यहां देखें: https://developer.amazon.com/sdk/fire/specifications.html#UserAgentStrings –

7

वहाँ दो चीजें हैं आप 1/सिल्क (या सिल्क त्वरित) लिए जाँच करनी चाहिए 2/"जलाने", "केएफओटी", "केएफटीटी" या https://developer.amazon.com/sdk/fire/specifications.html

रेशम या पास-थ्रू # 1 में आपको सी से देना चाहिए onfirmation, वेब पेज एक WebView से पहुँचा जा रही है तो # 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

कंडेंस्ड संस्करण (और [वर्तमान किंडल्स] शामिल करने के लिए अपडेट किया गया है (https://developer.amazon.com/appsandservices/solutions/devices/kindle-fire/specifications/01-device-and-feature- स्पेसिफिकेशन) इस टिप्पणी दिनांक के अनुसार): '/ Kindle|Silk|KFAPW|KFARWI|KFASWI|KFFOWI|KFJW|KFMEWI|KFOT|KFSAW|KFSOWI|KFTBW|KFTHW|KFTT|WFFOWI/i.test (ua)' – ecraig12345

2

एक समस्या यह है कि अमेज़ॅन हर नए मॉडल के लिए तार बदलता है। आप केवल किंडल, सिल्क और केएफ * के लिए जांच सकते हैं, लेकिन इससे संभावित रूप से झूठी सकारात्मक हो सकती है। मैंने थोड़ी अधिक पठनीय और बनाए रखने में आसान बनाने के लिए ऊपर दिए गए उदाहरणों में से एक कोड को थोड़ा सा बदल दिया है।

18 नवंबर, 2015 तक, नीचे दिए गए कोड को काम करना चाहिए।

नए मॉडल के लिए https://developer.amazon.com/sdk/fire/specifications.html देखें।

<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 पर चला रहे हैं रहा है और अधिक जटिल:

इस कोड को मैं दोनों 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 
संबंधित मुद्दे