IT

[javascript] 모바일 여부 확인 후 튕겨내기

lottoking 2017. 11. 15. 20:59
반응형

javascript를 이용한 모바일 여부를 확인하는 방법에 대해 여러 블로그에서 소개 되고 있는데요.

각종 브라우저에서 개발자 모드의 모바일 에뮬레이션을 이용했을 때 navigator.userAgent 값을 가지고 여러가지 테스트를 할 수 있어 그 방법을 공유하고자 합니다.


우선 아래처럼 html을 작성한 후 html 확장자의 파일로 저장한 후 크롬 또는 익스플로러에서 실행해 봅니다.


<!doctype html> <html> <head> <meta name="viewport" content="initial-scale=1, maximum-scale=1"> <title>check</title> </head> <body> <h3>navigator.platform : </h3> <p><script>document.write(navigator.platform);</script></p> <h3>navigator.userAgent :</h3> <p><script>document.write(navigator.userAgent);</script></p> </body> </html>


크롬과 익스플로러에서 해당 html파일을 실행하시면 아래 화면과 같은 결과를 확인 할 수 있습니다.


<크롬 브라우저 결과 화면>


<익스플로러 브라우저 결과 화면>









이때, 크롬과 익스플로러에서 F12키를 누르시면 개발자 모드가 실행되는데 크롬은 우측 영역에 모바일 보기 버튼을 클릭하시고 좌측 영역에서 원하시는 단말기를 선택하시고 익스플로러는 "에뮬레이터" 탭을 선택하신 후 브라우저 프로필을 WindowsPhone으로 선택하고 나머지 옵션을 원하시는대로 선택하신 후 새로고침을 하시면 navigator.userAgent에 대해 선택하신 단말기의 정보로 확인이 가능합니다.


<크롬 브라우저 모바일 단말기 모드 적용 화면>


<익스플로러 브라우저 모바일 단말기 모드 적용 화면>


공통적으로 navigator.platform의 값은 해당 html을 접속한 운영체제의 플랫폼 정보를 얻을 수 있다라는 것을 확인할 수 있었고,

navigator.userAgent 값은 브라우저의 개발자모드로 쉽게 변경해 가며 다른 값을 얻을 수 있다라는 것을 확인할 수 있었습니다.

즉, navigator.userAgent를 이용해서 모바일 여부를 확인한다면 사용자가 브라우저의 개발자모드를 이용해서 얼마든지 선회해서 접근할 수 있다라는 것입니다. 예를들어 웹뷰를 이용한 앱을 개발하여 배포하였고 PC가 아닌 모바일에서만 필히 서비스를 제공해야 할 필요가 있는 경우는 navigator.userAgent를 이용하실 때 좀 더 고민해 보셔야 할 것입니다.


결론은 간단하게 navigator.platform를 이용하여 PC 운영체제인 경우는 모바일이 아닌 것으로 간주하여 브라우저를 닫는 처리를 하는게 제일 좋은 방법이 아닐까 싶습니다.

  <script>
    var filter = "win16|win32|win64|mac";
    if (navigator.platform && filter.indexOf(navigator.platform.toLowerCase()) >= 0) {
      alert("모바일이 아닙니다.");
      window.close();
    }
  </script>




반응형