2013-08-02 2 views
1

브라우저가 iOS 5 이상인지 (이 SO 스레드 Detect iOS version less than 5 with JavaScript) 다음 스크립트를 사용하여 검색하려고합니다.JavaScript로 iOS 5 이상 감지

function iOSversion() { 
    if (/iP(hone|od|ad)/.test(navigator.platform)) { 
     var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); 
     return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]; 
    } 
} 

ver = iOSversion(); 

if (ver[0] >= 5) { 
    alert('This is running iOS 5 or later.'); 
} else { 
    alert('This is NOT running iOS 5 or later.'); 
} 

그것은에서 iOS 5에서 작동 이상 예상대로,하지만 다른 브라우저에서 다음과 같은 오류가 발생합니다 :

Uncaught TypeError: Cannot read property '0' of undefined 

를 그리고이 스크립트 아래의 모든 자바 스크립트가 실패합니다.

누군가가이 문제를 해결할 수있는 방법을 알려주십시오. 고맙습니다.

답변

5

당신은 ver[0] >= 5 경우 확인하고, 그러나 아이폰 OS 아니라면이 처음 정의되어 있는지 확인해야하므로, ver은 정의되지 않은 : 다른 브라우저에 대한

function iOSversion() { 
    if (/iP(hone|od|ad)/.test(navigator.platform)) { 
     var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); 
     return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]; 
    } 
} 

var ver = iOSversion(); 

if (ver && ver[0] >= 5) { 
    alert('This is running iOS 5 or later.'); 
} else { 
    alert('This is NOT running iOS 5 or later.'); 
} 
+0

은 (버전)' – luqmaan

+0

완벽한, 감사하면'에 의존하는'대해서 typeof 버전 = 'undefined'' 대신에 더 좋은 생각이 될 수 있습니다! 나는 그것이 내가 잃어버린 간단하다는 것을 알았다. 위치를 적용하려면이 방법을 사용하고 있습니다.이를 처리 할 수있는 모바일 브라우저에 고정되어 있습니다. UA 스니핑은 대부분의 모바일 브라우저가 고정 위치를 지원하기 때문에이 경우 피처 감지보다 필요하지만 매우 많은 버그가 있습니다. 신속한 답변을 주셔서 다시 한번 감사드립니다. – user2586455

0

iOSversion() 반환 undefined합니다.

시도 : undefined[0] 당신이 가진 오류를 줄 것입니다.

당신은 당신의 수표를 변경할 수 있습니다!

if (ver !== undefined && ver[0] >= 5) { 
    // .. 
}