지마켓의 신기한 자바스크립트 오류 해결법

겨울옷을 사러 갔다. 비싸! 인터넷으로 옷을 사면 싸다는 말을 듣고 지마켓에 가보았다. 싸!


주문을 했다. 안 와! 열흘이 지났다. 왔다. 그런데 작아! 반품을 하려고 들어가봤다.

깨알만하게 쓰여있는 취소/반품/교환안내 버튼. 오케이. 클릭. 팝업이 떴다.

반품신청 하러가기. 좋아. 클릭. 이거 뭐야. 안되잖아? 팝업창 아래를 보니 자바스크립트 에러. opener라는 객체가 없단다. 이게 뭔 소리야. 소스코드를 열어보았다. "반품신청 하러가기" 버튼을 클릭하면 아래 함수가 실행되도록 되어 있다.

function parentGo(){
     opener.document.location.href = "http://www.gmarket.co.kr/challenge/neo_my_gd/order_contract_edit_list.asp";
     self.close();
}

아마도 팝업창에서 "반품신청 하러가기"를 클릭하면 원래 창이 반품신청 하는 곳으로 이동하게 짜두었나 보다. 부모창 id가 opener겠지. 부모창으로 갔다. 소스코드 보기. 찾기. opener.

function eventDreamAuction(){
      opener.document.location.href="http://www.gmarket.co.kr/challenge/neo_auctio/auction_goods.asp?goodscode=&auc_no=&check_yn=Y";
      opener.document.focus();
}

이 놈의 opener는 도대체 뭐야. 찾기. eventDreamAuction. 검색결과 없음. 엥? 이놈의 opener는 도대체 뭐야?

고객센터로 전화.

나: 반품신청하려는데 버튼이 먹통이네요. 아마 자바스크립트 에러가 난 것 같은데..
상담원: 반품신청하려고 하신다고요? 주문번호가 어떻게 되시죠?
나: (아, 일단 반품신청부터 해야지) 블라블라

어찌어찌 반품신청을 했다. 배송료는 내가 내야 한단다. 좋아. 배송료를 내러 갔다. 배송료를 내는 방법은 세 가지. 카드 결제하는 건 없다. 환불액에서 차감할 수 있단다. 음. 이건가 보군. 선택. 결제 확인.

난데없이 5천원을 결제하란다.


다시 고객센터로 전화.

나: 배송료 카드 결제는 없고, 환불액에서 차감하는 걸 선택했는데 또 뭘 결제하라네요?
상담원: 고객님께서 카드로 결제하셨기 때문에 차감은 안되시고요, 배송료는 카드로 결제해주셔야 합니다.
나: 그러니까, 차감을 선택한 다음에 카드로 결제하라고요?

나: 그리고 반품신청 버튼도 자바스크립트 에러 나서 클릭이 안되는데..
상담원: 그건 고객님 컴퓨터 문제기 때문에 저희가 도와드릴 수 없습니다.

자바스크립트 에러 나는 게 왜 내 컴퓨터 문제야.

나: 아니, 그게 그럴 수가 없거든요? 혹시 기술부서랑 통화할 수 있나요?
상담원: 네.. 그럼 저희쪽에서 연락드리도록 하겠습니다. 언제 통화가능하신가요?
나: 4시쯤 해주세요.

오케이. 상담원한테 자바스크립트 얘기해봐야 소용없지. 시간은 흘러 오후 4시. 따르릉.

기술자: 고객님, 반품신청하는데 문제가 있으시다고요?
나: 아뇨. 반품신청은 전화로 했는데, 인터넷에서 그 버튼이 클릭이 안되더라고요? 제가 보니까 자바스크립트 에러가..
기술자: 고객님, 원격접속 해봐도 되겠습니까?
나: 아니 자바스크립트 에러가 나는데 왜 원격접속을 하나요?
기술자: 그게 고객님 PC 문제거든요.
나: 그럴리가 없을 것 같은데요?
기술자: 저희가 고객님 말고는 반송신청에 문제가 있다는 보고가 들어온 적이 없거든요. 저희 쪽 문제라면 전화가 쏟아지지 않겠습니까?

문득 스쳐지나간 원사운드 만화 한 편. 뭐. 일단 속는 셈치고 해보자. 지마켓 홈페이지의 고객센터로 들어가니 원격접속하는 프로그램을 다운 받을 수 있다. 이거 신기한 걸? 프로그램 실행.

기술자가 원격접속으로 들어오더니 컴퓨터에 설치된 보안 프로그램들을 열심히 지우기 시작한다. 오, 보안 프로그램 때문에 자바스크립트 에러가 뜰 수도 있구나 신기한데? 인터넷 임시 파일도 지우고, 익스플로러 설정도 초기화한다. 음. 역시 마이크로소프트 이 개노무 자식들 브라우저를 어떻게 만들었길래!

나: 자, 이제 다시 해볼까요?

"취소/반품/교환 안내" 클릭. "반품신청 하러가기" 클릭. 오..


안되잖아!!!!!!!


자바스크립트가 잘못되어 있는데 설마 보안 프로그램 지운다고 그게 되겠냐 말이지. 정말 전화가 쏟아지지 않는게 신기하군. 하여간 이 기술자를 닥달해봐야 역시 소용없는 일이라, QA팀이나 개발팀하고 연결해달라고 하니, 그건 무리고 전달은 해주겠단다. 물론 아주 길고 지루한 변명도 들었지만 그건 일일이 옮기기도 귀찮다.

오늘 덕분에 전화 통화만 다 합쳐서 한 시간을 했다. 상담원과 기술자야 무슨 잘못이 있겠냐. 링크 하나도 자바스크립트로 떡칠을 해놓고 그나마도 에러를 내서 아예 링크를 먹통으로 만들어놓은 개발팀. 이런 오류를 못 찾아낸 QA팀(있기는 있나?). 그리고 대형 인터넷 쇼핑몰을 운영하면서 상담원과 기술자에게 "자바스크립트 에러"라는 말이 무슨 뜻인지 알려주지 않은 경영진. 이거나 받아라.

내가 다시는 지마켓에서 뭘 사나 봐라.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 아이추판다 | 2009/11/03 02:14 | 트랙백 | 핑백(1) | 덧글(23)

트랙백 주소 : http://nullmodel.egloos.com/tb/1964669
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at Twitter.. at 2009/11/04 22:17

... Null Model : 지마켓의 신기한 자바스크립트 오류 해결법</a> nullmodel.egloos.com/1964669 &ndash; <a href="http://nullmodel.egloos.com/1964669" target="_blank" class="external exit">view page</a> ... more

Commented by EE at 2009/11/03 03:38
내일쯤 프린터기 주문한다고 어디서 살까 고민하다 쥐마켓도 생각했는데....
역시 화면 구성 지저분한 곳 치고 괜찮은 곳 없군요. 그럼 어디가 좋으려나.
Commented by 아이추판다 at 2009/11/04 00:23
어디든 다 비슷하죠.
Commented by 시노조스 at 2009/11/03 04:11
쥐시장에서 싸다싸 중꿔신발 샀다가 피봤습니다. (재질이 부직포야 orz)
그냥 쥐시장하고 옥숑의 구조 자체가 중꿔인듯 합니다.
글을 보니 시스템도 중꿔인가 보군요.

그래서 전 종합 쇼핑몰이 아니라 일반 인터넷 쇼핑몰에 가서 비싸게 주고 신발 하나 샀습니다. 정말 멀쩡한게 오더군요. (신기하면 안되는데... 멀쩡한게 신기하네요 -_-)
Commented by 아이추판다 at 2009/11/04 00:23
싼게 비지떡이니까요;;
Commented at 2009/11/03 07:08
비공개 덧글입니다.
Commented by 아이추판다 at 2009/11/04 00:23
좀 신기할 정도로 그렇더군요.
Commented by 지나가다 at 2009/11/03 08:59
opener 는 팝업창이 자신을 생성한 창을 지칭하는 예약어입니다.

a: 원래 window
b: a 가 생성한 window

b.opener == a
Commented by 아이추판다 at 2009/11/04 00:24
고맙습니다.
Commented by 솔로부대장 at 2009/11/03 09:48
한번 설치된 모든 툴바나 포인트 관련 프로그램을 다 삭제해보세요.

그게 원인인 경우도 많습니다. 웃기게도.

알소프트에서 내놓는 툴바클리너같은걸 써보시는것도 좋고요. 까보면 별노무게 다있습니다. 참고로 쥐마켓 개발자나 그런분들 DB는 잘 아는데 저런쪽은 오히려 님보다 더 무지할지도요...너무 믿지 마시길.

지나가다님이 쓰신 말씀을 보니 어떤 프로그램이나 객체가 차일드 창들을 몽땅 교란하는듯..
Commented by 아이추판다 at 2009/11/04 00:25
highseek님 댓글을 보니 코딩 자체가 잘못된 것 같아요.
Commented by suksim at 2009/11/03 11:44
대단하다... 어떻게 저럴 수가?
Commented by 아이추판다 at 2009/11/04 00:25
정말 대단하죠.
Commented by 자유연애 at 2009/11/03 11:49
황당한 상황을 너무 재밌게 표현해 주셨네요..
자바스크립트 오류인데 원격접속이라.. ㅋㅋ

Commented by 아이추판다 at 2009/11/04 00:25
^^
Commented by 머스타드 at 2009/11/03 14:57
클라이언트의 문제로 자바스크립트가 제대로 동작 안하는 경우도 없지는 않습니다. 플러그인이 브라우저 동작을 이상하게 만든다든지, 브라우저의 보안 설정이라든지 그런 이유도 있고 심지어는 가끔 보안 프로그램이 스크립트를 이용한 보안문제를 막겠다고 문제가 있을 법한 스크립트를 멋대로 변조하기도 하죠. 플러그인과 연동해서 돌아가는 스크립트라면 어떠한 이유로 플러그인이 설치되지 않아서 잘못 작동하는 경우도 있고, 사용자 환경에서 보안 등의 이유로 막힌 경로에서 가져와야할 리소스가 없어서 동작하지 않는 경우도 있고요. 자바스크립트라는게 이론상으로는 모든 환경에서 똑같이 작동해야 정상이지만 실제로는 너무 다양한 case가 있기 때문에 이런건 건바이건으로 해결하는 수 밖에 도리가 없죠. ㅡㅡㅋ
Commented by 아이추판다 at 2009/11/04 00:27
그렇군요. 그러니까 더더욱 자바스크립트 사용을 자제해야 할텐데, 링크 여는 것까지 자바스크립트로 하고 있으니...
Commented by highseek at 2009/11/03 18:59
opener는 특정 윈도우의 id가 아니라 해당 윈도우를 연 객체를 지칭하는 예약 객체(?)입니다.

근데 지마켓 들어가서 확인해보니까 안뜰 수밖에 없네요.

처음 팝업창 떴을 때 아마 반품/교환 배송비 페이지가 떴을 겁니다. 맞나요? 이 때는 opener 객체에 부모창의 정보가 담겨있겠죠. 그리고 팝업창 상단에는 취소안내, 반품안내, 교환안내, 반품/교환 배송비 라는 네개의 메뉴가 있죠?

문제는 이 팝업창이 asp로 구현되어 있어서 메뉴를 골라 페이지를 바꿔버리면 서버에 다시 request를 요청하게 되고, 새로 불려온 페이지는 이미 opener 객체를 상실해버립니다. 따라서 반품안내를 클릭한 후 하단의 신청하러가기 버튼을 누르셔봐야 소용이 없는 거죠. 이미 반품안내를 클릭한 시점에서 opener객체는 날아가니까..

고객센터에 여태 문의가 없었다면, 그 이유는 일반적으로 반품신청을 할 때 여기가 아닌, 페이지 상단의 '나의 쇼핑정보'->'취소/환불/교환'으로 들어가서 주문했던 물품을 선택하고 반품신청했기 때문에 그럴겁니다. 즉 반품하는 경로가 따로 있는거죠.

이건 명백히 설계상의 문제입니다. 잘 쓰이지 않는 메뉴라 소홀했던 모양이군요. 그러면 안되는데 말이죠.
Commented by 아이추판다 at 2009/11/04 00:27
자세한 설명 고맙습니다. 근데 그렇게 짰다면 처음부터 한 번만 테스트를 해봐도 알 수 있는 것 아니었을까요;;;
Commented by highseek at 2009/11/04 00:39
글쎄요. 뭐 여러 가능성은 있겠지만..
아마 저 팝업페이지가 원래 저렇게 나누어져있지 않았겠죠. 하나로 붙어있던 팝업페이지를 asp로 바꿔서 페이지를 나누면서, 페이지가 나누어지는 것만 확인하고 저 버튼 부분을 테스트하지 않았던 것일지도 모릅니다. 업데이트하면서 관련된 부분을 미처 다 테스트하지 않은 저런 경우 사실 흔하거든요. 프로그램 품질보증(QA) 개념이 없는거죠.

그리고 뭐 테스트에 대한 개념이 제대로 박혀있었다면 애초에 기술자란 양반이 저리 나오겠습..(...)
Commented by 흐음.. at 2009/11/04 13:01
담부턴 인XX크를 사용해보심이 어떨지..
Commented by 사이코 at 2009/11/05 19:02
ㅋㅋㅋ, 멋진(?) 경험을 하셨군요.
저는 쥐시장에서 두어번 물건을 산적이 있는데 모두 문제가 없었습니다.
대신, 저는 온라인에서 물건을 살 때는 '표준적'이고 '보편적'인 물건만 삽니다.
이를테면 책이나 음반 또는 컴퓨터 부품 등 어디서 사더라도 품질이 '비교적' 동일한 물건들이요.
옷이나 신발 같은 물품은 메이커마다 사이즈가 다를 수가 있기 때문에 오프라인 매장에서 미리 확인하신 다음에 사는 것이 좋을 겁니다.
오프라인 매장에서 확인할 꺼면 무엇하러 온라인에서 사느냐고요?
그건 음... 음... =3=3=3
Commented at 2009/11/07 01:26
비공개 덧글입니다.
Commented by 다즈 at 2009/11/10 21:01
잘 읽었습니다. ^^
QA 가 없군요.

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶