크로스 브라우징 이란?

웹 페이지 제작 시에 모든 브라우저에서 깨지지 않고 의도한 대로 올바르게(호환성) 나오게 하는 작업을 말한다.
[HTML, CSS, Javascript 작성 시 W3C의 웹 규격에 맞는 코딩을 함으로써 어느 브라우저, 기기에서 사이트가 의도된 대로 보여지고 작동되는 기법.]

크로스 브라우징 작업이 필요한 원인은 무엇일까?

브라우저 마다 더링 엔진이 다르기 때문이다.

  • 작동되지 않는 HTML5, Javascript 코드가 존재

  • 해석하지 못하는 CSS 코드 존재

  • 브라우저 버그들이 존재

  • 브라우저마다 자체적인 CSS 스타일

*IE를 버전마다 크로스 브라우징하는 이유.
최신 버전으로 자동 업데이트가 되는 브라우저가 많으나 IE는 해당되지 않는다.
IE는 사용자가 직접 업데이트를 진행해야 하며, 윈도우 버전에 따라 최대 버전이 한정되어 있다.

 

랜더링 엔진(or 레이아웃 엔진)

페이지를 랜더링할 때 실질적으로 작업을 하게 되는 엔진이다.
같은 엔진을 사용하면 다른 브라우저여도 비슷하게 출력된다.

[레이아웃 엔진의 종류]트라이던트(Trident)게코(Gecko)웹킷(Webkit)프레스토(Presto)블링크(Blink)듀얼 엔진

트라이던트(Trident)

- IE, 아웃룩 이메일 클라이언트나 윈도우 프로그램의 미니 브라우저등에 사용된다.

마이크로 소프트

게코(Gecko)

- 파이어 폭스, 모질라 재단의 이메일 클라이언트인 선더버드에 사용된다.

모질라

웹킷(Webkit)

- 초기 애플사가 사파리 엔진으로 사용하기 위해 차용했으나 현재는 웹킷 프로젝트로 분리되어 개발되고 있다.
-
크롬에서도 사용되었던 엔진이며 iOS나 안드로이드의 기본 브라우저들이 이 웹킷 엔진을 사용한다.
- 점유율이 높은 엔진이다.

애플사

프레스토(Presto)

- 오페라 15버전부터 더이상 사용하지 않는다.

오페라 소프트웨어 

블링크(Blink)

- 웹킷 엔진을 사용하던 구글이 크롬이 개발, 사용하고 있는 엔진이다. 
- 웹킷에서 줄기를 가져 왔기 때문에 웹킷엔지과 비슷한 모습이 보여진다. 
- 프레스토 엔진을 버린 오페라가 블링크 엔진을 사용하고 있다.

구글

듀얼 엔진

- 국내 이스트소프트의 스윙(Swing) 브라우저를 예로 들면 크롬과 같은면서도 액티브X를 지원하는데, 독자적인 엔진이 아닌 두가지 엔진을 번갈아 사용하는 방식이기 때문에 가능하다. 

- 보통 트라이던트와 웹킷or블링크 엔진을 사용한다.

 

 

 

브라우저 대응 순서, 어떤 브라우저에 초점을 둬야하는가?

타겟이 되는 (가장 점유율이 높은) 브라우저부터 맞추는 것이 좋다.
보통 기준이 되는 %이하인 브라우저는 지원에서 제외하기도 한다. 


점유율 조사 사이트 : http://gs.statcounter.com/
세계 2019/4 ~2020/4

1위 크롬 2위 사파리 3위 파이어폭스 그외 비슷비슷

 

한국 2019/4 ~2020/4

크롬 1위, 2위-3위(엎치락뒤치락) 삼성인터넷, 사파리 4위 IE, 웨일 5위 파이어폭스 그외 비슷비슷

http://gs.statcounter.com/browser-market-share/desktop/south-korea/#monthly-201805-201903

 

확실히 세계랑 한국만 봤을때 다른 부분이 존재한다.

정책이나 타겟을 잘 잡아야한다.

 

크로스 브라우징 작업

1. 도움이 되는 사이트를 이용하여 브라우저에 맞게 작업한다. - 캔아이유즈 https://caniuse.com

2. 초기화 작업 (CSS 초기화 작업) - 브라우저마다 차이가 나는 기본 스타일 값들을 초기화 시킨다.

3. 핵(Hack)

스타일을 줄 때 특수문자를 넣어서 다른브라우저들에서는 인식이 안되지만 IE 특정 버전에서는 인식되도록 하는 방법이다. 이 방법은 추천하지 않는다.

IE8 이상의 브라우저에서 구분해내기가 어려우며 CSS 유지 보수를 어렵게 한다.

div{ 
  color:red; 
  
  /* IE7이하 대응 */ 
  *color:blue 
  
  /* IE6 대응 */ 
  _color:green 
}

4. IE용 주석을 이용한 방법 (Conditional comments)

HTML 문서 내에서 주석을 이용하여 구별한다.

lt (less than) 미만
lte(less than or equal to) 이하
gt(greater than) 초과
gte(greater than or equal to) 이상
<!-- [if IE 7]> 
	<link href="ie7.css" type="text/css" rel="stylesheet"/> 
<![endif]--> 

<!-- [if IE 8]> 
	<p> 이 문구는 IE8이 포함되지 않은 하위 브라우저, 즉 IE7,6에서 보여지게 됩니다.</p> 
<![endif]-->

5. 메타 태그를 이용한 IE모드

<head>
	// ...
    
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
    
    //...
</head>
    

<head> 요소 안에 넣어두며 IE가 문서를 읽고 랜더링 할 때 원하는 모드로 랜더링을 하게 해준다.
만약 content에 값이 "IE=edge"라면 해당브라우저가 할 수 있는 가장 최신의 모드로 랜더링한다.

 

 

크로스 브라우징 작업, 어느정도 맞춰야하나?

IE 하위버전에서 html5를 사용하려고 라이브러리를 사용하는 것은 성능을 저하시킬수 있다.

 

보통, IE의 버전이 낮을 수록 컴퓨터 성능도 최신이 아닐 가능성이 크다.

그러므로 성능 저하는 더 치명적일 가능성이 크다.
크로스 브라우징의 의미를 정확히 알고 작업해야 한다. (동일성이 아닌 동등성!)

 


 

 

참고 사이트
https://mulder21c.github.io/2019/01/30/what-is-cross-browsing/

 

 

 

Fingerprint.js 라이브러리

https://github.com/Valve/fingerprintjs

 

사용자의 브라우저 버전을 표시할 수 있다.

- 웹 서버가 통신을 하는 과정에서 전송되는 기본정보

- 브라우저의 종류

- PC의 운영체제(OS)

- 쿠키 사용여부(브라우저 설정값) 정보

- 어도비 플래시(Adobe Flash), 자바 가상머신(Java Virtual Machine)을 통해 브라우저 기능을 지원하는 프로그램의 버전

- PC의 표준시

- 화면 해상도

- PC의 보유 글꼴 및 색상 등의 정보

- 그 외에도 여러가지.

 

이러한 정보들을 모아서 브라우저 지문이라고한다.

 

개인을 식별 할 수 있는 정보이기보다는 접속한 pc, 브라우저의 단순한 설정 정보를 말한다.

다양한 값을 가지기 때문에 로그인 시에 '2단계 인증'의 로직 중에 하나로 사용될 수 있다.

 

설정값 같은 경우에는 사용자 설정에 따라 수집된다.

예를 들어 pc의 표준시를 수집하는 경우 해당 pc의 국가나 사용자의 설정에 따라 24가지(-12~+12)의 값을 가질 수 있다.

 

쿠키는 보안설정 등의 변경으로 사용을 차단할 수 있지만, 브라우저 지문은 쿠키차단, IP주소를 숨기는 프록시를 사용하더라도 정보를 수집할 수 있다.

변경하려면 운영체제 및 소프트웨어의 정보를 변경해야 한다고한다.

 

특징을 잘 활용하면 쿠키 없이도 사용자를 식별할 수 있는 정보로 사용될 수 있다.



회사에서 작업을 하고 언어별로 적용 된 것을 확인해보려고 했더니, 브라우저 언어를 따라가는 방식이더라~

그래서 검색도 해보고 설정도 만져보고 하다가 4가지 브라우저에 대한 확인 작업을 할 수 있었다.


※ 참고 : 포스팅하는 방식은 브라우저 언어 설정에 따라 표현되는 사이트만 해당되는 것이므로 것이므로 

사이트 방문 시 설정한 언어로 나오지 않는다면 그 사이트는 다른 방식을 사용하는 것입니다.(geo ip방식을 사용한다거나 뭐 ㅎㅎ..)


근데.. 브라우저 언어에 따라가는 것을 선호하지 않는 듯? 하다고 느낀 것이 변경 후에 여러 사이트를 확인 해봤는데 

국내 유명 포털 사이트들은 이 방식이 아니더라~ 

그럼에도 나는 작업을 했어야 했기 때문에 필요한 정보였듯이 누군가도 필요로 할 것이라 생각하고 공유! 한다!






1. 크롬



> 브라우저 오른쪽  옵션'버튼' 클릭 후 '설정'




> 스크롤해서 하단 '고급▼' 클릭



> 언어 항목에서 언어 옆 'V' 클릭



> '언어 추가' 클릭 후 팝업창 오픈

> 팝업창에서 '일본어' 검색 (본인이 변경하려는 언어 검색) 후 나오는 항목 체크박스 '체크' 후 '추가' 버튼 클릭 



> '일본어' 추가 된 것 확인 그 후 옆에 '옵션'  클릭 후 '위로이동' 체크 (맨 상단으로 이동)




> 일본어 '옵션'  에서 '이 언어로 Chrome 표시' 클릭 후 일본어에 마우스 올리면 보이는 '다시 시작' 클릭 



> google 사이트에서 확인 시 일본어로 뜨는 것이 확인 된다.


스크롤의 압박이 생길까봐, 파이어폭스와 오페라는 간단히 설명한다.

거의 비슷하기 때문에 크롬을 한번해보거나 보기만 해도 매우 쉽게 할 수 있을 것이다.




2. 파이어폭스


> 구글 옵션  버튼과 마찬가지로 파이어폭스도 비슷한 위치(오른쪽 상단)에 옵션이 있다. '옵션' 버튼이 클릭 후 '설정'

> 설정 페이지에서 검색창이 있는데 거기에 '언어' 검색 후 나오는 '언어' 항목에서 '선택'버튼 클릭, 팝업창 확인



> '추가할 언어 선택' 클릭하면 리스트가 나오는데 거기에서 변경할 언어 선택 후 활성화 된 '추가' 버튼 클릭

> 새로 추가 된 언어 확인 후 선택 한 후에 '위로 이동'버튼 클릭하여 최상단에 올려주고 확인 클릭

> 팝업창이 닫히면 google가서 확인!






3. 오페라



> 왼쪽에서 옵션 버튼 클릭 후 '설정'(alt+p) 클릭 



> 설정 페이지에서 왼쪽 서브 메뉴에서 '브라우저' 클릭

> 스크롤해서 내려가다가 '언어' 에서 '사용자 인터페이스 언어선택'에서 사용할 언어 선택 후 '다시시작'버튼 클릭 후 google에서 확인!





3.  Internet Explorer(인터넷익스플로러)


※ ie는 윈도우 os 언어를 변경해야 하므로 확인 후 다시 돌려놓지 않으면, 당황스러움을 겪게 될 것이다.

윈도우 재 시작시 변경된 언어로 나오는 불상사가 생기기 때문.



> 왼쪽 옵션(톱니바퀴모양) '버튼' 클릭 후 '인터넷 옵션' 클릭

(캡쳐 속 internet explorer 11설정 팝업창은 무시할 것)



> 팝업에서 '언어' 버튼 클릭 후 나오는 팝업창의 '언어 기본 설정 지정' 클릭



> 제어판 창이 오픈되면 ' 언어추가' 버튼 클릭



> 언어 추가 창에서 추가 할 언어 찾은 후에 '선택'하고 '추가'버튼 클릭



> 추가된 언어 확인가능

> 추가한 언어 선택 후 '위로 이동' 눌러서 최상단 올려줄 것 (빨간 네모 부분 읽어보면 가장 위에 있는 언어가 기본언어로 적용되는 부분 확인가능)

> 브라우저 ie 종료후에 새 창 띄워서 google 확인!

※ 이 작업 후에 다시 마지막 언어 기본 설정 변경 창에서 '한국어'를 최상단으로 올려줘야합니다. 


끗~~~~~~


+ Recent posts