JavaScript를 사용하여 모바일 장치, OS를 감지하는 방법

안녕하세요 데브스입니다.

이 블로그에서는 JavaScript를 사용하여 모바일 장치나 브라우저 또는 OS를 감지하고 사용자를 모바일 응용 프로그램이나 웹 응용 프로그램으로 자동 리디렉션하는 방법을 배울 것입니다.

내용의 테이블


  • What is navigator object in JavaScript
  • Properties of navigator object
  • How to detect mobile device or browser or OS
  • How to detect mobile device or browser or OS in Production

  • 따라서 시간을 낭비하지 않고 튜토리얼을 시작하겠습니다.

    1.JavaScript의 navigator 객체란?

    To get the bowser details or device details, JavaScript stores these information in the navigator property of window object.
    navigator object contains lots of information about the browser, some of the most used/ important information we will see later in this tutorial.

    Lets first see what navigator object is.
    if you directly want to see how to get the detect mobile and desktop then you can skip this part can click
    here
    navigator 개체에는 브라우저에 대한 정보가 포함되어 있습니다.
    (참고: 모든 주요 브라우저를 제외한 모든 브라우저가 이 개체를 지원하는 것은 아닙니다.)

    2. 가장 중요한 속성 중 일부는,



    1. Clipboard - used to copy something to clipboard and paste it any where (Ex. while making Click to copy)
    2. connection
    3. language - shows the language of browser.
    4. geolocation - Returns a Geolocation object that can be used to locate the user's position
    5. onLine - check whether the browser is online
    6. platform - machine type where browser is installed.
    7. cookieEnabled - it returns a Boolean value that indicates whether cookies are enabled or not.
    8. serviceWorker - mainly used to checks if the browser supports service workers
    9. vibrate(time) - make device vibrate if it support that
    10. userAgent - will see below
    11. userAgentData - will see below

    I think this much information about the navigator object is enough to understand what is navigator object and what all information it contains

    Now, let see

    3.모바일 장치 또는 브라우저 또는 OS를 감지하는 방법.

    To get these information we will use the property userAgent , userAgentData of navigator object.

    navigator.userAgent
    userAgent will give you the information of lot of things like device name, browser name, OS version but the information returned by browser is not much understandable.
    So, we can understand these returned information from the hack.

    to get OS version and name you can follow the below hack,

    if (window.navigator.userAgent.indexOf("Windows NT 10.0")!= -1) 
    {console.log("OS is Windows 10");}
    
    if (window.navigator.userAgent.indexOf("Windows NT 6.3") != -1) 
    {console.log("OS is Windows 8.1");}
    
    if (window.navigator.userAgent.indexOf("Windows NT 6.2") != -1) 
    {console.log("OS is Windows 8");}
    
    if (window.navigator.userAgent.indexOf("Windows NT 6.1") != -1) 
    {console.log("OS is Windows 7");}
    
    if (window.navigator.userAgent.indexOf("Windows NT 6.0") != -1) 
    {console.log("OS is Windows Vista");}
    
    if (window.navigator.userAgent.indexOf("Windows NT 5.1") != -1) 
    {console.log("OS is Windows XP");}
    
    if (window.navigator.userAgent.indexOf("Windows NT 5.0") != -1) 
    {console.log("OS is Windows 2000");}
    
    if (window.navigator.userAgent.indexOf("Mac") != -1) 
    {console.log("OS is Mac/iOS");}
    
    if (window.navigator.userAgent.indexOf("X11") != -1) 
    {console.log("OS is UNIX");}
    
    if (window.navigator.userAgent.indexOf("Linux")!= -1) 
    {console.log("OS is Linux");}
    
    

    to check mobile device info you can follow below hack,

     function detectMobile() {
        const toMatch = [
            /Android/i,
            /webOS/i,
            /iPhone/i,
            /iPad/i,
            /iPod/i,
            /BlackBerry/i,
            /Windows Phone/i
        ];
    
        return toMatch.some((toMatchItem) => {
            return navigator.userAgent.match(toMatchItem);
        });
    }
    

    userAgent is much more complex to get these details.
    So we have one more property i.e.
    navigator.userAgentData
    This gives the information about browser and mobile detection in 1 line.

    navigator.userAgentData.mobile; //returns true or false, depending on the condition
    

    NOTE: Both of these 2 ways are not recommended to be use in the production.

    So lets now see the best way to do so,

    4. 더 나은 방법은,

    using matchMedia
    it gives you more flexibility to decide that after what screen size you want to deal it as mobile or desktop and lot of other info,
    please check official doc from MDN,
    MDN - Media Query
    MDN- Media Query Features
    About Pointer

    function DetectDevice() {
        let isMobile = window.matchMedia || window.msMatchMedia;
        if(isMobile) {
            let match_mobile = isMobile("(pointer:coarse)");
            return match_mobile.matches;
        }
        return false;
    }
    
    DetectDevice() //return true if mobile, and return false if desktop
    


    또한 matchMedia는 장치를 모바일(CSS Media Query와 동일)로 처리하고 훨씬 더 유연한 navigator 개체로 처리할 화면 크기를 선택할 수 있는 권한을 제공합니다.

    if (window.matchMedia("only screen and (max-width: 760px)")) {  
      //do something you want to for the screen size less than 760
    }
    

    windowscreen 개체를 사용하여 이를 달성할 수도 있지만, 이는 더 오래된 방식이며 더 큰 응용 프로그램에서는 훨씬 복잡합니다.

    if(window.innerWidth > 768){//do something}
    if(screen.width > 768){//do something}
    


    여기까지 읽어주셔서 감사합니다. JavaScript를 사용하여 모바일 화면 및 OS를 감지하는 방법에 대한 간략한 소개입니다.
    이 기사가 유용하다고 생각되면 이 기사를 좋아하고 공유하십시오. 누군가는 유용하다고 생각할 수도 있습니다.

    기술적으로 부정확한 것을 발견하면 아래에 의견을 보내주십시오.

    당신을 위해 좋은 정보를 읽을 수 있기를 바랍니다.
    자세히 알아보려면 방문https://www.capscode.in/blog...
    다음 블로그 기사에서 뵙겠습니다. 조심해!!

    감사,

    좋은 웹페이지 즐겨찾기