[ JavaScript ] 자바스크립트 기본 문법 | Navigator 객체 | 크로스 브라우저 이슈 해결

2021. 2. 7. 02:50·Archive/Develop
728x90
반응형

이미지 출처 :    https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

 

자바스크립트 기본 문법  ::  Navigator 객체

 

 

 

 

 

Navigator 객체는 브라우저의 정보를 제공하는 객체입니다.

 

주로 호환성 문제 등을 위해 사용됩니다.

 

 

 

 

지금까지 포스팅에서는 console.log 를 이용했습니다.

 

이번 포스팅에서는 console.dir 도 사용해보도록 하겠습니다.

 

console.dir 는 console.log 와 마찬가지로 프로퍼티를 열람할 수 있습니다.

 

 

 

 

 

 

console.log 와는 다르게 디렉토리 형식으로 출력되는 것을 확인할 수 있습니다.

 

 

이제 Navigator 객체에서 중요하게 쓰이는 프로퍼티를 알아보도록 하겠습니다.

 

 

 

 

 

 

 

 

appName

 

 

웹 브라우저의 이름을 알려주는 프로퍼티 입니다.

 

IE는 Microsoft Internet Explorer, 파이어폭스, 크롬등은 Nescape로 표시합니다.

 

 

 

console.log(navigator.appName)

 

 

 

 

 

저는 크롬 브라우저를 사용하기 때문에, Netscape 라고 출력되었습니다.

 

 

appVersion

 

브라우저의 버전을 의미합니다.

 

 

console.log(navigator.appVersion)

 

 

 

 

userAgent

 

브라우저가 서버측으로 전송하는 USER-AGENT HTTP 헤더의 내용입니다.

 

appVersion과 비슷하게 출력됩니다.

 

 

 

console.log(navigator.userAgent)

 

 

 

 

 

platform

 

 

브라우저가 동작하고 있는 운영체제에 대한 정보입니다.

 

 

 

console.log(navigator.platform)

 

 

 

 

 

 

 

 

 

자바스크립트 기본 문법  ::  기능테스트

 

 

 

 

Navigator 객체는 브라우저 호환성을 위해서 주로 사용하지만,

모든 브라우저에 대응하는 것은 쉬운 일이 아니므로

아래와 같이 기능 테스트를 사용하는 것이 더 선호되는 방법입니다.

 

 

예를 들어 Object.keys라는 메소드는 객체의 key 값을 배열로 리턴하는 Object의 메소드인데,

 

이 메소드는 ECMAScript5에 추가되었기 때문에

오래된 자바스크립트와는 호환되지 않습니다.

 

 

이러한 크로스 브라우저 이슈는 아래와 같은 코드를 통해서 호환성을 맞출 수 있습니다. 

 

 

 

 

 

// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
if (!Object.keys) {
  Object.keys = (function () {
    'use strict';
    var hasOwnProperty = Object.prototype.hasOwnProperty,
        hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
        dontEnums = [
          'toString',
          'toLocaleString',
          'valueOf',
          'hasOwnProperty',
          'isPrototypeOf',
          'propertyIsEnumerable',
          'constructor'
        ],
        dontEnumsLength = dontEnums.length;
 
    return function (obj) {
      if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
        throw new TypeError('Object.keys called on non-object');
      }
 
      var result = [], prop, i;
 
      for (prop in obj) {
        if (hasOwnProperty.call(obj, prop)) {
          result.push(prop);
        }
      }
 
      if (hasDontEnumBug) {
        for (i = 0; i < dontEnumsLength; i++) {
          if (hasOwnProperty.call(obj, dontEnums[i])) {
            result.push(dontEnums[i]);
          }
        }
      }
      return result;
    };
  }());
}

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] 제어 대상 찾기 - getElementById, getElementsByClassName, getElementsByTagName  (0) 2021.02.07
[ JavaScript ] 자바스크립트 기본 문법 | 창(window) 제어 | 팝업 차단  (0) 2021.02.07
[ JavaScript ] 자바스크립트 기본 문법 | Location 객체 | 자바스크립트 url 이동  (0) 2021.02.07
[ JavaScript ] 자바스크립트 기본 문법 | BOM(Browser Obejct Model) 이란 무엇인가 | 전역객체 window  (0) 2021.02.07
[ JavaScript ] 자바스크립트 기본 문법 | Object Model  (0) 2021.02.06
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] 제어 대상 찾기 - getElementById, getElementsByClassName, getElementsByTagName
  • [ JavaScript ] 자바스크립트 기본 문법 | 창(window) 제어 | 팝업 차단
  • [ JavaScript ] 자바스크립트 기본 문법 | Location 객체 | 자바스크립트 url 이동
  • [ JavaScript ] 자바스크립트 기본 문법 | BOM(Browser Obejct Model) 이란 무엇인가 | 전역객체 window
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    카카오 100일 프로젝트
    javascript
    백준
    자바스크립트 API
    파이썬 백준
    자바스크립트 객체
    oracle db
    코드업 기초
    파이썬
    C++
    장고
    코드업 파이썬 기초 100제
    파이썬 알고리즘
    백준 파이썬
    코드업
    파이썬 기초 문제
    파이썬 기초
    보안뉴스
    Codeup
    Django
    백준 풀이
    Oracle
    docker
    비박스
    Python
    파이썬 문제
    오라클
    자바스크립트
    백준 문제풀이
    Git
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] 자바스크립트 기본 문법 | Navigator 객체 | 크로스 브라우저 이슈 해결
상단으로

티스토리툴바