일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 서버 사이드 렌더링
- CSS
- 클라이언트 사이드 렌더링
- 변수 생성 단계
- 깊은 복사
- react
- 자바스크립트 함수
- CORS
- 자바스크립트
- 실행 컨텍스트
- 자바스크립트의 클래스
- 프로미스
- webpack
- 세션 스토리지
- 호이스팅
- 리액트의 생명 주기
- 주소창에 naver 입력시 일어나는 일
- polyfill
- 리액트
- 이벤트 캡처링
- MPA
- 로컬 스토리지
- 이벤트 버블링
- 얕은 복사
- 스코프 체인
- 브라우저 렌더링원리
- async/await
- undeclared
- 가상 dom
- props와 state 차이점
Archives
- Today
- Total
Gapus Dev Blog
[CS] 크로스 브라우징에 대해 본문
크로스 브라우징
설명
- 다양한 웹 브라우저에서 웹 사이트와 웹 애플리케이션이 동일하게 작동하는 것을 의미
- 다른 브라우저에서도 일관된 사용자 경험을 제공하기 위해 필수적
- 여러 가지 웹 브라우저가 존재하며, 각각 다른 렌더링 엔진과 HTML, CSS JS를 해석하는 방식을 가지고 있어서
동일한 웹 페이지가 다른 브라우저에서는 다르게 보일 수 있다.
접근 방법
표준 준수
- 웹 표준에 따라 개발하는 것이 중요
- HTML, CSS, JS의 최신 버전과 권장 사항을 준수하는 것이 좋음.
브라우저 테스트
- 다양한 브라우저와 버전에서 웹 사이트를 테스트
- 주유 브라우저(Chrome, Firefox, safari, Edge 등) 뿐만 아니라 오래된 버전의 브라우저도 테스트
- 각 브라우저에서의 호환성 문제를 발견 및 수정 가능
폴리필 사용
- 폴리필은 오래된 브라우저에서 지원하지 않는 기능을 대체하는 코드
- 폴리필을 사용하면 오래된 브라우저에서도 최신 기능 사용 가능
CSS 리셋
- 각 브라우저는 기본적으로 서로 다른 스타일을 가지고 있다.
- CSS 리셋을 사용하여 브라우저 간의 스타일 차이를 최소화 가능
유연한 레이아웃
- 다양한 화면 크기와 해상도에 대응할 수 있는 유연한 레이아웃을 구성
- 미디어 쿼리를 사용하여 반응형 디자인을 구현
크로스 브라우징이 중요한 이유
다양한 브라우저 사용자 고려
- 인터넷 사용자는 다양한 웹 브라우저를 사용하여, 각각의 다른 운영체제에서 작동 할 수 있음.
- 크로스 브라우징을 고려하지 않으면 특정 브라우저 사용자는 이용하지 못 할 가능성 존재
- 모든 사용자들에게 접근성을 제공하기 위해 크로스 브라우징 필수
일관된 사용자 경험 제공
- 웹 사이트나 웹 애플리케이션이 다른 브라우저에서도 일관된 모습으로 나타나도록 보장
- 동일한 웹 사이트를 다양한 브라우저에서 이용 가능하여, 일관된 사용자 경험을 제공받을 수 있음.
- 일관성 있는 디자인과 기능은 사용자들에게 신뢰감을 주고, 웹 사이트의 효율성과 사용성을 향상
시장 점유율 고려
- 브라우저들은 시장에서 각자의 정유율 가짐.
- 다양한 브라우저를 사용하는 만큼, 다양한 브라우저에서 잘 작동되는 것은 시장 점유율과 관련 있음.
- 크로스 브라우징을 고려하여 개발하면 브라우저별 점유율에 영향 받지 않고
더 넒은 사용자층에 서비스 제공 가능
검색 엔진 최적화(SEO)
- 크로스 브라우징은 검색 엔진 최적화에도 영향
- 검색 엔진은 웹 페이지의 구조와 내용을 분석하여 순위를 결정하는데, 크로스 브라우징을 고려하면 검색 엔진이 더 잘 이해하고 인덱싱 가능
- 검색 결과에서 노출되는 기회를 높이고, 더 많은 유기적인 트래픽을 유치하는데 도움을 준다.
단점
개발 시간과 비용
- 크로스 브라우징을 위한 개발은 추가적인 시간과 비용을 필요할 수 있다.
- 각 브라우저에서의 호환성 문제를 해결, 테스트를 수행, 필요한 수정을 반영
- 개발 일정과 예산을 고려
기능 제약과 제한
- 모든 브라우저가 지원하는 최신 기능을 활용하려면 오래된 버전의 브라우저와의 호환성을 고려
- 일부 기능이나 효과가 제한 가능성 존재
- 모든 브라우저에서 동일한 사용자 경험을 제공하는 것이 아닌, 최소한의 호환성을 유지하는 것이 필요
추가적인 유지 보수
- 다양한 브라우저에서의 호환성을 유지하기 위해 추가적인 유지 보수 작업이 필요
- 새로운 브라우저 버전이 출시되거나 기존 브라우저의 업데이트가 이루어지면 호환성 문제를 확인하고 수정
예시
// 브라우저 탐지를 통한 기능 지원 여부 확인
if (navigator.userAgent.indexOf("MSIE") !== -1) {
// IE 브라우저에서만 실행되는 코드
console.log("This code is running on Internet Explorer.");
} else if (navigator.userAgent.indexOf("Firefox") !== -1) {
// Firefox 브라우저에서만 실행되는 코드
console.log("This code is running on Firefox.");
} else if (navigator.userAgent.indexOf("Chrome") !== -1) {
// Chrome 브라우저에서만 실행되는 코드
console.log("This code is running on Chrome.");
} else {
// 기타 브라우저에서 실행되는 코드
console.log("This code is running on a different browser.");
}
// 조건부 처리를 통한 브라우저별 코드 실행
<!--[if IE]>
<script>
// IE 브라우저에서만 실행되는 코드
console.log("This code is running on Internet Explorer.");
</script>
<![endif]-->
<!--[if Firefox]>
<script>
// Firefox 브라우저에서만 실행되는 코드
console.log("This code is running on Firefox.");
</script>
<![endif]-->
<!--[if Chrome]>
<script>
// Chrome 브라우저에서만 실행되는 코드
console.log("This code is running on Chrome.");
</script>
<![endif]-->
<!--[if !IE|!Firefox|!Chrome]>
<script>
// 기타 브라우저에서 실행되는 코드
console.log("This code is running on a different browser.");
</script>
<![endif]-->
'CS' 카테고리의 다른 글
[CS] 이벤트에 대해 (0) | 2023.11.21 |
---|---|
[CS] 객체 지향 프로그래밍(Object-Oriented Programming)에 대해 (0) | 2023.11.18 |
[CS] 로컬 스토리지, 세션 스토리지, 쿠키의 차이 (0) | 2023.10.28 |
[CS] 주소 창에 naver.com 입력하면 일어나는 일 (0) | 2023.10.22 |
[CS] 브라우저 렌더링 원리 (0) | 2023.10.19 |