2009년 11월 03일
지마켓의 신기한 자바스크립트 오류 해결법
겨울옷을 사러 갔다. 비싸! 인터넷으로 옷을 사면 싸다는 말을 듣고 지마켓에 가보았다. 싸!

주문을 했다. 안 와! 열흘이 지났다. 왔다. 그런데 작아! 반품을 하려고 들어가봤다.
깨알만하게 쓰여있는 취소/반품/교환안내 버튼. 오케이. 클릭. 팝업이 떴다.
반품신청 하러가기. 좋아. 클릭. 이거 뭐야. 안되잖아? 팝업창 아래를 보니 자바스크립트 에러. opener라는 객체가 없단다. 이게 뭔 소리야. 소스코드를 열어보았다. "반품신청 하러가기" 버튼을 클릭하면 아래 함수가 실행되도록 되어 있다.
아마도 팝업창에서 "반품신청 하러가기"를 클릭하면 원래 창이 반품신청 하는 곳으로 이동하게 짜두었나 보다. 부모창 id가 opener겠지. 부모창으로 갔다. 소스코드 보기. 찾기. opener.
이 놈의 opener는 도대체 뭐야. 찾기. eventDreamAuction. 검색결과 없음. 엥? 이놈의 opener는 도대체 뭐야?
고객센터로 전화.
나: 반품신청하려는데 버튼이 먹통이네요. 아마 자바스크립트 에러가 난 것 같은데..
상담원: 반품신청하려고 하신다고요? 주문번호가 어떻게 되시죠?
나: (아, 일단 반품신청부터 해야지) 블라블라
어찌어찌 반품신청을 했다. 배송료는 내가 내야 한단다. 좋아. 배송료를 내러 갔다. 배송료를 내는 방법은 세 가지. 카드 결제하는 건 없다. 환불액에서 차감할 수 있단다. 음. 이건가 보군. 선택. 결제 확인.
난데없이 5천원을 결제하란다.

다시 고객센터로 전화.
나: 배송료 카드 결제는 없고, 환불액에서 차감하는 걸 선택했는데 또 뭘 결제하라네요?
상담원: 고객님께서 카드로 결제하셨기 때문에 차감은 안되시고요, 배송료는 카드로 결제해주셔야 합니다.
나: 그러니까, 차감을 선택한 다음에 카드로 결제하라고요?
나: 그리고 반품신청 버튼도 자바스크립트 에러 나서 클릭이 안되는데..
상담원: 그건 고객님 컴퓨터 문제기 때문에 저희가 도와드릴 수 없습니다.
자바스크립트 에러 나는 게 왜 내 컴퓨터 문제야.
나: 아니, 그게 그럴 수가 없거든요? 혹시 기술부서랑 통화할 수 있나요?
상담원: 네.. 그럼 저희쪽에서 연락드리도록 하겠습니다. 언제 통화가능하신가요?
나: 4시쯤 해주세요.
오케이. 상담원한테 자바스크립트 얘기해봐야 소용없지. 시간은 흘러 오후 4시. 따르릉.
기술자: 고객님, 반품신청하는데 문제가 있으시다고요?
나: 아뇨. 반품신청은 전화로 했는데, 인터넷에서 그 버튼이 클릭이 안되더라고요? 제가 보니까 자바스크립트 에러가..
기술자: 고객님, 원격접속 해봐도 되겠습니까?
나: 아니 자바스크립트 에러가 나는데 왜 원격접속을 하나요?
기술자: 그게 고객님 PC 문제거든요.
나: 그럴리가 없을 것 같은데요?
기술자: 저희가 고객님 말고는 반송신청에 문제가 있다는 보고가 들어온 적이 없거든요. 저희 쪽 문제라면 전화가 쏟아지지 않겠습니까?
문득 스쳐지나간 원사운드 만화 한 편. 뭐. 일단 속는 셈치고 해보자. 지마켓 홈페이지의 고객센터로 들어가니 원격접속하는 프로그램을 다운 받을 수 있다. 이거 신기한 걸? 프로그램 실행.
기술자가 원격접속으로 들어오더니 컴퓨터에 설치된 보안 프로그램들을 열심히 지우기 시작한다. 오, 보안 프로그램 때문에 자바스크립트 에러가 뜰 수도 있구나 신기한데? 인터넷 임시 파일도 지우고, 익스플로러 설정도 초기화한다. 음. 역시 마이크로소프트 이 개노무 자식들 브라우저를 어떻게 만들었길래!
나: 자, 이제 다시 해볼까요?
"취소/반품/교환 안내" 클릭. "반품신청 하러가기" 클릭. 오..

자바스크립트가 잘못되어 있는데 설마 보안 프로그램 지운다고 그게 되겠냐 말이지. 정말 전화가 쏟아지지 않는게 신기하군. 하여간 이 기술자를 닥달해봐야 역시 소용없는 일이라, QA팀이나 개발팀하고 연결해달라고 하니, 그건 무리고 전달은 해주겠단다. 물론 아주 길고 지루한 변명도 들었지만 그건 일일이 옮기기도 귀찮다.
오늘 덕분에 전화 통화만 다 합쳐서 한 시간을 했다. 상담원과 기술자야 무슨 잘못이 있겠냐. 링크 하나도 자바스크립트로 떡칠을 해놓고 그나마도 에러를 내서 아예 링크를 먹통으로 만들어놓은 개발팀. 이런 오류를 못 찾아낸 QA팀(있기는 있나?). 그리고 대형 인터넷 쇼핑몰을 운영하면서 상담원과 기술자에게 "자바스크립트 에러"라는 말이 무슨 뜻인지 알려주지 않은 경영진. 이거나 받아라.
내가 다시는 지마켓에서 뭘 사나 봐라.

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


function parentGo(){
opener.document.location.href = "http://www.gmarket.co.kr/challenge/neo_my_gd/order_contract_edit_list.asp";
self.close();
}
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.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팀이나 개발팀하고 연결해달라고 하니, 그건 무리고 전달은 해주겠단다. 물론 아주 길고 지루한 변명도 들었지만 그건 일일이 옮기기도 귀찮다.


이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- 자바스크립트, DOM (도큐먼트 오브젝트 모델)의 트리구조 by 저공비행사
- [javascript] 자바스크립트 객체 by JiunSuk
# by | 2009/11/03 02:14 | 트랙백 | 핑백(1) | 덧글(23)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
... Null Model : 지마켓의 신기한 자바스크립트 오류 해결법</a> nullmodel.egloos.com/1964669 – <a href="http://nullmodel.egloos.com/1964669" target="_blank" class="external exit">view page</a> ... more
역시 화면 구성 지저분한 곳 치고 괜찮은 곳 없군요. 그럼 어디가 좋으려나.
그냥 쥐시장하고 옥숑의 구조 자체가 중꿔인듯 합니다.
글을 보니 시스템도 중꿔인가 보군요.
그래서 전 종합 쇼핑몰이 아니라 일반 인터넷 쇼핑몰에 가서 비싸게 주고 신발 하나 샀습니다. 정말 멀쩡한게 오더군요. (신기하면 안되는데... 멀쩡한게 신기하네요 -_-)
a: 원래 window
b: a 가 생성한 window
b.opener == a
그게 원인인 경우도 많습니다. 웃기게도.
알소프트에서 내놓는 툴바클리너같은걸 써보시는것도 좋고요. 까보면 별노무게 다있습니다. 참고로 쥐마켓 개발자나 그런분들 DB는 잘 아는데 저런쪽은 오히려 님보다 더 무지할지도요...너무 믿지 마시길.
지나가다님이 쓰신 말씀을 보니 어떤 프로그램이나 객체가 차일드 창들을 몽땅 교란하는듯..
자바스크립트 오류인데 원격접속이라.. ㅋㅋ
근데 지마켓 들어가서 확인해보니까 안뜰 수밖에 없네요.
처음 팝업창 떴을 때 아마 반품/교환 배송비 페이지가 떴을 겁니다. 맞나요? 이 때는 opener 객체에 부모창의 정보가 담겨있겠죠. 그리고 팝업창 상단에는 취소안내, 반품안내, 교환안내, 반품/교환 배송비 라는 네개의 메뉴가 있죠?
문제는 이 팝업창이 asp로 구현되어 있어서 메뉴를 골라 페이지를 바꿔버리면 서버에 다시 request를 요청하게 되고, 새로 불려온 페이지는 이미 opener 객체를 상실해버립니다. 따라서 반품안내를 클릭한 후 하단의 신청하러가기 버튼을 누르셔봐야 소용이 없는 거죠. 이미 반품안내를 클릭한 시점에서 opener객체는 날아가니까..
고객센터에 여태 문의가 없었다면, 그 이유는 일반적으로 반품신청을 할 때 여기가 아닌, 페이지 상단의 '나의 쇼핑정보'->'취소/환불/교환'으로 들어가서 주문했던 물품을 선택하고 반품신청했기 때문에 그럴겁니다. 즉 반품하는 경로가 따로 있는거죠.
이건 명백히 설계상의 문제입니다. 잘 쓰이지 않는 메뉴라 소홀했던 모양이군요. 그러면 안되는데 말이죠.
아마 저 팝업페이지가 원래 저렇게 나누어져있지 않았겠죠. 하나로 붙어있던 팝업페이지를 asp로 바꿔서 페이지를 나누면서, 페이지가 나누어지는 것만 확인하고 저 버튼 부분을 테스트하지 않았던 것일지도 모릅니다. 업데이트하면서 관련된 부분을 미처 다 테스트하지 않은 저런 경우 사실 흔하거든요. 프로그램 품질보증(QA) 개념이 없는거죠.
그리고 뭐 테스트에 대한 개념이 제대로 박혀있었다면 애초에 기술자란 양반이 저리 나오겠습..(...)
저는 쥐시장에서 두어번 물건을 산적이 있는데 모두 문제가 없었습니다.
대신, 저는 온라인에서 물건을 살 때는 '표준적'이고 '보편적'인 물건만 삽니다.
이를테면 책이나 음반 또는 컴퓨터 부품 등 어디서 사더라도 품질이 '비교적' 동일한 물건들이요.
옷이나 신발 같은 물품은 메이커마다 사이즈가 다를 수가 있기 때문에 오프라인 매장에서 미리 확인하신 다음에 사는 것이 좋을 겁니다.
오프라인 매장에서 확인할 꺼면 무엇하러 온라인에서 사느냐고요?
그건 음... 음... =3=3=3
QA 가 없군요.