금년도에 프로젝트를 하면서 가장 역사적(?) 인 사건을 하나 꼽으라면.. (angualr,gulp,등등이 있지만..)
IE8 을 대상 브라우저에서 제외 시키기로 결정했다는 점이다.
사실 이 부분은 기존의 프로젝트가 탄생했을때부터 문제가 되었던 부분이며 해당 프로젝트는. IE7 을 지원했고,
IE7 에서 너무 극악으로 성능이 떨어져 어쩔수 없이 (+ 사용자도 없고..) 제외 했지만. IE8 도 만만치 않은 놈이라. 생각보다 너무 많은 고생을 했다.
제외에 대한 근거로는
- 사용자가 거의 없음
- 성능이 원하는 만큼 안나옴
- 개발 리소스가 너무 많이 들어감
이였지만. 한마디로 요약하자면 “IE8에 들어가는 리소스를 다른데 투입하면 완성도를 더 높힐수 있다” 였다.
이러한 근거로 기획팀을 설득했고. 접속자중에 실 사용자가 없다는게 파악되면서 결국에는 IE8을 대상 브라우저에서 제외시키기로 하였다.
결론적으로는 IE8을 제외 하면서 angular.js 도 사용가능하게 되었고. jQuery도 일부 버전 업데이트 가능하게 되었고 얻은게 더 많은것 같다.
다만.. 그동안 IE8 에서 고생했던 부분을 블로그에 짤막히(?) 정리해보고자 한다. 대략적으로 생각나는 이슈는 아래와 같다.
- 셀렉터 이슈
- pseudo 셀렉터가 잘 먹지 않으며
- 멀티 셀렉터도 잘 먹지 않는다.
- 즉.. 믿고 쓸수 있는건 id, class
- 이건 나중에 정리하자
- base64이슈
- base64로 인코딩 된 이미지의 용량 제한이 발생
- Hover 이벤트 동작 안함
- $().is(“:hover”) 가 IE 78 에서는 동작안함
- 정리 예정
- change 이벤트 오류 (IE7에서 발생 )
- IE7에서는 change 이벤트가 정상동작안함
- jQuery에서는 click 이벤트로 fallback
- 이것에 대한 side effect 정리.
- property와 attribute 의 차이 $().prop을 써야하나? $().attr()을 써야하나?
- 이건 jQuery 공식문서에도 나와있는데 다시 정리 필요
- 여기 해당 이슈에 대해 일부 정리 http://blog.kazikai.net/?p=111
- localStorage 이슈
- localStorage가 지원되지 않아. $.jStorage 를 사용했는데 여기에도 조심해야 할 이슈 있음
- window.opener 이슈
- window opener 로 창을 열고 데이터를 전달할때
- JSON형태의 데이터는 동작을 보장하지 못함
- IE 7,8,9, 심지어 10 에서도 자주 나타남
- 결국 데이터 전달할때는 JSON.stringify()로 .. 문자열로 변환해야함
- 관련 포스팅은 IE8과 9에서 발생하는 javascript memory leak 이슈
이제는 IE8 이하 브라우저를 대상으로 개발하는 경우가 없겠지만.. 나중을 위해 리마인드.( 다시 볼일 없기를..)