2012-11-09 4 views
-4

자바 스크립트 브라우저 감지 기능을 작성했지만 다른 사람들의 지식을 향상시키고 싶습니다.자바 스크립트 브라우저 감지 기능 개선

문제 :

당신은 내가 "크롬 (18)는"A "맥스톤 3"하지만해야 겠지 것을 알 수 있습니다 반드시 그렇지 않다 물론!

어떻게 Chrome 18과 Maxthon 3를 구별 할 수 있습니까?

마찬가지로 Firefox와 Sea Monkey를 어떻게 구별 할 수 있습니까?

음력은 어떨까요? navigator.userAgent를 통해 해당 브라우저를 감지 할 수 있습니까?

내가 잊어 버린 다른 인기있는 브라우저가 있습니까?

순수한 자바 솔루션/제안 만하시기 바랍니다! 또한 CDNjs 같은 일부 CDN을 지원하는 좋은 브라우저/특징 검출은 모더 나이저 http://modernizr.com/에서 구현

<!DOCTYPE html> 

<script type="text/javascript"> 

function GetBrowser(){ 
var browser=""; 
var version=0; 

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    browser="FireFox";} else { 

    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    browser="Internet Explorer";} else { 

    if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    browser="Opera";} else { 

    if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    if (version==18) {version=3; browser="Maxthon";} else {browser="Google Chrome"}} else {version=0; browser="Undetermined";} 
}}} 
return browser+' '+version;} 

document.write(GetBrowser()); 
</script> 
+5

휠을 다시 발명하는 이유는 무엇입니까? –

+4

사용자 에이전트에서 브라우저를 검색하는 것이 끔찍한 일이라는 것을 알고 있습니까? 그리고 이것은 그물에 많은 시간을했습니다, 간단한 구글 검색은 그것을 보여줍니다. – epascarello

+2

왜 브라우저를 감지하려고합니까? 대부분의 경우 * 기능 탐지가 훨씬 좋습니다. – scunliffe

답변

-5

이것은 내가 간략하게 말한 것입니다. Opera와 Safari에서 버전 검색을 수정하고 SeaMonkey를 추가했습니다.

<!DOCTYPE html> 

<script type="text/javascript"> 

function GetBrowser(){ 
var browser=""; 
var version=0; 

if (/SeaMonkey[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    browser="SeaMonkey";} else { 

    if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    browser="Mozilla FireFox";} else { 

    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
    version=new Number(RegExp.$1); 
    browser="Internet Explorer";} else { 

    if (/Opera/.test(navigator.userAgent)){ 
    if (/Version[\/\s](\d+\.\d+)/.test(navigator.userAgent)){version=new Number(RegExp.$1);} 
    browser="Opera";} else { 

    if (/Maxthon[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     version=new Number(RegExp.$1); 
     browser="Maxthon";} else { 

     if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ 
     version=new Number(RegExp.$1); 
     browser="Google Chrome";} else { 

     if (/Safari/.test(navigator.userAgent)){ 
     if (/Version[\/\s](\d+\.\d+)/.test(navigator.userAgent)){version=new Number(RegExp.$1);} 
     browser="Safari";} else {browser="Unknown";} 

}}}}}} 
return browser+' '+version;} 


document.write(GetBrowser()); 

</script> 
+3

먼저 권장하는 방법은 if ​​/ else 중괄호를 올바르게 형식화하는 법을 배우는 것입니다. 당신은 버그를 당신이하는 것처럼 소개하려고합니다. 다음 제안은 휠을 다시 발명하는 것을 잊어 버리는 것입니다. 기존 라이브러리를 사용하십시오. 전체 접근 방식이 잘못되어 코드에 포인터를 제공 할 사람이 없습니다. – jahroy

+1

ANY 프로그래밍 언어의 코드 형식에는 국제 표준이 없으므로 눈에 맞지 않는 사람의 스타일에 대해 불평하는 것은 의미가 없습니다. 당신이 할 수있는 일은 좋아하는 3GL에 "예쁜 프린터"를 쓰고 (예전처럼) 좋아하는 스타일로 다른 사람의 코드를 포맷하는 것입니다. 당신이 그것에 익숙하다면 그것은 재미있는 문자열 파싱 문제입니다. 이것에 대한 도움을 얻는 것에 관해서 ... 나는 그것을했다. 그리고 그것은 모든 물고기를 위해 매우 감사한다. 타타! –

+5

실제로 모든 언어에는 스타일 가이드 라인이 적용됩니다. 동굴에 살고 있니? 당신이 그들을 따라야 만하는 법률은 없지만, 가장 분별있는 사람들은 그렇게합니다. 프로그래밍에 대한 행운을 빕니다. – jahroy

2

내가 알아 내기 위해 원하는 것은 당신이 어떤 브라우저 지원 기능을 감지 할 수 있습니다 그래서 당신이 할 수있는 것을

입니다 http://cdnjs.com/ 간단한 차이만으로 브라우저를 감지 할 수 있습니다.

+0

물론 제 3 자 라이브러리가 프로그래밍 포럼에서 허용되어서는 안되는 것을 제안하는 것은 당연합니다 ... "프로그래머의 라이브러리 교환"또는 "조니 퍼즐 조각 배우기" –

+2

@ mariospolycarpou - 당신은 더 이상 잘못 될 수 없습니다. 왜 지구상에서 도서관 사용을 반대하겠습니까?선택한 작업과 같은 일부 작업은 복잡하여 작업을 수행 할 수있는 기존 라이브러리를 무시하도록합니다. 자신의 웹 서버도 구현할 계획입니까? – jahroy

+0

그냥 준비된 소프트웨어를 사서 코딩에 대해 걱정하지 마십시오! :) –