주제: 트랙백과 댓글의 URL을 링크로 변환할 때의 문제.
안녕하십니까,
사실은 티스토리 버그리포트 블로그에 글을 올렸고, "확인 후 다시 답변주겠다"는 답글도 받은 상태입니다만, TNF의 RSS를 구독 중이던 터라 조만간 1.1.2가 나올 모양이길래 그 전에 해결되면 좋겠다는 심정에 여기에도 글을 올립니다.
(이거 태터 개발자와는 전혀 관계없는 사람이 이렇게 가입해서 글을 써도 되는 건지 몰라서 조심스럽습니다만... 실례를 범한 거라면 정말 죄송합니다)
태터나 티스토리가
* 트랙백을 받을 때 URL(그러니까 트랙백을 보낸 사람의 포스트 주소)을 링크할 때,
* 댓글란에 URL에 해당하는 문자열이 있을 때 그걸 자동으로 링크할 때,
트랙백은 window.open(this.href) 의 형태로, 댓글은 다른 함수를 부르지만 결과적으로 같은 형태로, 자바스크립트를 써서 새창으로 띄우는데, 이 때 URL에 "%-인코딩된 스트링"이면서, 하필이면(?) 그 인코딩된 시퀀스가 UTF-8 스트링인 경우에는 문제가 됩니다.
예를 들어, 위키페디아의 "태터툴즈"페이지의 주소는 아래와 같습니다:
http://ko.wikipedia.org/wiki/%ED%83%9C% … 4%EC%A6%88
이걸
* 본문에 링크하면: 그냥 a href= 라서 잘 됩니다.
* 본문에 도구모음에서 "새 창으로"를 선택하여 링크하면, target="_blank"를 쓰는 형태라도 역시 잘 됩니다.
* 댓글에 링크하면... 해 보시면 아시겠지만 http://ko.wikipedia.org/wiki/%C3%8D%C2% … 2%A6%C2%88 라는 페이지로 갑니다. 당연히 그런 페이지가 없다고 나옵니다.
* 트랙백으로 받는 경우도 댓글과 마찬가지입니다.
* 댓글,트랙백 모두, 좌클릭이 아니라 우클릭해서 "열기", "새 창으로 열기" 등을 할 때는 자바스크립트를 거치지 않으므로 잘 됩니다.
* 그리고 이 문제는, IE에서만 생깁니다 -_-;;; FF는 괜찮았습니다. 즉 태터나 티스토리의 버그는 사실 아닙니다.
그나마 댓글에는,
http://ko.wikipedia.org/wiki/태터툴즈
라고 써주면 됩니다. 근데 이건 해당 태터(또는 티스토리)가 UTF-8 인코딩을 쓰고 있기 때문에 다행히 되는 것이지, EUC-KR을 쓰는 곳에 저렇게 링크를 걸면 "태터툴즈" 문자열이 EUC-KR형태로 전달되니까 위키페디아 쪽에서 못 찾습니다.
댓글은 사람이 적으니까 그나마 저렇게라도 할 수 있지만, 트랙백을 보내는 사이트 입장에서는, 이 트랙백을 받아줄 상대 사이트가 무슨 인코딩을 쓰는지, 인코딩이 다를 경우 변환을 해 줄 것인지를 알 수 없는 상황이기 때문에 %-인코딩한게 최선이라고 봅니다. 근데 그렇게 %-인코딩을 했더니만 저렇게 잘못 해석해서 띄우면 난감하지요.
저렇게 잘못 변환하는 게 window.open()이냐 this.href냐의 문제가 있는데, 제가 보기에는 this.href가 범인인 것 같습니다. window.open의 인자로 %-인코딩된 스트링을 바로 넣어보면 제대로 되거든요.
제가 웹을 검색해서 주워듣기로는, target이라는 속성이 표준에서 빠졌다는 것과, 일반 브라우저는 새 창으로 띄우고, 시각 장애인용 시스템에서는 자바스크립트를 무시해서 현재창으로 띄우기 위함이다...라는 것 같습니다만, 그럼 링크는 그냥 평범하게 현재 창으로 뜨게 하고, 링크 옆에 새창으로 띄우기 아이콘 같은 걸 추가하는 형태는 어떨런지요.
비록 브라우저의 문제이긴 하지만, IE가 고쳐지길 기대하는 건 요원할 것 같고 해서, 태터/티스토리 쪽에서 다른 방법을 쓸 수는 없을까 하는 바램으로 글 남겼습니다.
좋은 하루 되세요~
P.S.
아래 주소에 제가 첨에 증상을 발견하고 이런 저런 상황에서 테스트한 게 남아 있습니다. 참고가 될까 해서 남깁니다.
http://raymundo.tistory.com/5
raymundo (2007-03-13 15:48:00)에 의해 마지막으로 수정