2012-01-30 4 views
9

내 웹 사이트가 휴대 전화로 작동하는 경우 javascript로 감지하려고합니다. navigator.userAgent 및 navigator.appVersion을 사용해 보았으나 빛에 대한 결과는어떻게 자바 스크립트로 불을 감지 할 수 있습니까?

5.0 (Macintosh U; Intel Mac OS X 10_6_3; ko-ko) AppleWebKit/533.16 (Gecko와 같은 Gecko) 버전 /5.0 사파리/533.16

모질라/5.0 (매킨토시, U, 인텔 맥 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

신난다. 최신 버전의 Kindle 업데이트로 작동하는 reg ex를 제공 할 수 있습니까? – Aaron

+5

위의 내용은 1 세대 Kindle Fire 이후에는 작동하지 않습니다.아마존이 사용자 에이전트 문자열에 "Kindle Fire"를 붙이면 좋겠지 만 Kindle Fire 2 세대 이후 KFTT, KFJWI 및 KFJWA와 같은 숨겨진 약자로 이동했습니다. 자세한 내용은 여기를 참조하십시오. 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 웹 페이지가 웹보기에서 액세스되는 경우 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

아마존은 모든 새로운 모델에 대해 문자열을 변경합니다. Kindle, Silk 및 KF * 만 확인할 수는 있지만 오탐 (false positive)으로 이어질 수 있습니다. 위의 예제 중 하나에서 조금 더 읽기 쉽고 유지하기 쉽도록 코드를 약간 변경했습니다.

2015 년 11 월 18 일자로 아래 코드가 작동합니다.

새 모델의 경우 https://developer.amazon.com/sdk/fire/specifications.html을 확인하십시오. 당신이 킨들 파이어 (Kindle Fire)에서 실행하고 있는지

<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

이 검출 훨씬 더 복잡 :

이것은 내가 모두 빛나다 화재 및 안드로이드 폰에 대한 내 웹 사이트에서 내 게임 루나 푸마 명을 리디렉션 쓴 코드는 사용자 에이전트가 많은 변장을 할 수 있기 때문에 다른 플랫폼을 감지하는 것보다

내가 킨들 파이어와 다른 플랫폼에서 실행 중인지 여부를 감지 할 수있는 is-mobile component을 작성했습니다. 이 예와 같이

를 가져 와서 자유롭게 사용 :

isMobile.Android() => true/false 
isMobile.iOS() => true/false 
isMobile.any() => true/false 
isMobile.KindleFire() => true/false 
isMobile.BlackBerry() => true/false 
관련 문제