REFERENCE‎ > ‎

Web Development Guideline to Avoid Trouble


언제까지나 [http]불평만 할 수는 없다. 버그 보고하기에 그칠 것이 아니라 '이렇게 하면 된다'고 제시할 줄도 알아야 한다. 어차피 요청받는 쪽에서는 [http]생각도 안 해본 문제일 테니. IE에서 돌던 것과 같은 기능, 같은 모양으로 표준에 맞는 스크립트와 레이아웃을 작성하는 법을 정리해보자.


도메인은 잊어라. 도메인이 의미가 있는 건 쿠키와 세션을 쓸 때 뿐이다. 그 외에는 모두 상대 주소면 족하다.

필요하다면 BASE 태그를 통해 임의로 기본 주소를 바꿀 수도 있음을 기억하라.


hover를 처리하는 동작은 되도록이면 피하라. 특히 터치스크린 환경의 경우 hover를 하기 어렵거나 아예 불가능할 수 있다. 아이폰을 위시해 웹이 되는 터치 기반 휴대기기가 많이 나오고 있음을 명심하라.


HTML을 쓰다보면, 태그와 태그의 줄이 다를 때 그 사이에 공백이 들어가는 걸 볼 수 있다. DOM으로 치면 TextNode 인데, 이게 이따금 골치다. 방금도 DIV 안에 INPUT 하나짜리 FORM(HIDDEN은 몇 개 더 있다)을 넣었는데 DIV 위에 자꾸 공백이 생기는 거다. CSS로도 해봤지만 도무지 바뀌질 않아서 혹시나 하고 태그의 끝을 끊어서 다음 태그 시작에 붙엿다. 이를 테면 >< 처럼 만들어서 절대 태그 사이에 빈 칸이 생기지 않도록 한 것이다. 그러니까 잘 된다.... ㅅㅂ


지금껏 겪어보고 혹은 나아가 의견 개진을 통해 해결했던 것으로는

HTTP 헤더 #

InternetExplorer와 달리 서버의 헤더 정보를 전적으로 신뢰하는 FireFox의 특성에 따라 웹 서버가 text/plain이라고 헤더를 뿌리면 제 아무리 멋들어진 text/html 형식의 페이지라도 글자만 잔뜩 뿌려지는 경우가 있다. 이는 웹서버 설정을 고쳐달라고 하면 된다. 이와 비슷하게 스크립트 언어에서 실제 내용과 다르게 헤더를 뿌리면 바이너리가 그대로 화면에 나오는 수가 있다. 이것도 서버 스크립트를 고치는 게 정답이다.

파일 다운로드 헤더 #

한글 파일명일 것인데 다운로드하면 파일 이름이 깨지고 잘리는 경우가 흔하다. 특히 내 경우에는 정부 기관에서 자료를 받으려고 하면 파일 이름이 죄다 소실되어서 제대로 정리하기가 힘들다. 헤더 처리에 문제가 있을 거라고 생각했는데 http://forums.mozilla.or.kr/viewtopic.php?t=4642 를 보니 정말 그런 것 같다. 해결 방법은 좀 더 알아봐야겠다. 아마도 [http]실제 구현할 때 정확한 절차가 있긴 있는 것 같다.

sakura님이 수고해주셔서 확인한 바로는, 헤더의 filename에 들어가는 문자열과 charset을 UTF-8와 EUC-KR로 했을 때, 윈도우의 FireFox에서는 다 되고, IE에서는 UTF-8일 경우 깨진다. IE는 W2K에서 한 건데, 윈도우 API가 UTF-8를 제대로 처리하지 못해서라는 얘기도 있었다고 한다. 리눅스 FireFox는 UTF-8 로케일 환경에서 UTF-8 파일명은 인식하고, EUC-KR은 깨진다. 아예 헤더가 없으면 차라리 잘 된다.

http://jshin.net/moztest/download.html 에 다양한 경우가 들어가 있다.

hangul-as-broken-ascii-and-stop-at-whitespace.png

hangul-as-broken-ascii-and-stop-at-whitespace2.png

hangul-not-broken-via-download.png

래시 메뉴 #

이미지 메뉴는 여러 시도로 CSS만으로도 깔끔하고도 화려하게 만드는 방법이 많이 알려져 있는데 플래시는 근성을 제대로 고려해 만들지도 않으면서 메뉴에 박히는 경우가 많다.

플래시가 제공하는 눈요기꺼리 때문에 눈이 값싼 사람들이 선호하는데, 어떤 식으로 설득할 수 있을까? 플래시의 샤라락 효과 같은 걸 대체할 방법은 있나?

location.href #

WalkPC는 독특하게도 location.href()를 쓴다. http://forums.mozilla.or.kr/viewtopic.php?p=1559#1559 에 의하면 window.location.href = ...를 쓰면 된다. [http]document.location.href는 읽기만 된단다.


Comments