web programming

IE 6.0 에서 input type="file" 의 경로가 submit시에 초기화 되는 버그..

Denise 2009. 3. 28. 22:03
버그라고 해야할지.. IE 6.0에서만 해당 문제점이 발생하니까 버그라고 해야겠네..
IE 7.0, IE 8.0에서는 문제없이 잘 작동을 했다..

한참동안을 삽질하다 드디어 해결책을 발견했는데....
문제점은 innerHTML 부분에 있었다. 로그인을 ajax로 구현했는데. ajax의 response를 담당하는
클래스에서 응답시 javascript와 alert메세지, div에 출력할 내용을 설정해 주는데..

responseXML.setDivMessage(div.toString());
responseXML.setJavascript("movePage('/file/index.jsp')");
responseXML.setAlertMessage(RSMemberName+"님 환영합니다.");

이런식으로 구현이 되어있었는데

문제 부분은 여기였다.

responseXML.setJavascript("document.location.reload()");

위와 같이 처리를 하면 응답을 받는 쪽은
         switch(currentNode.nodeName){
          case "div-message":
           targetObj.innerHTML = currentNode.childNodes[0].nodeValue;
           break;
          case "javascript":
     document.getElementById("scriptDIV").innerHTML = " ";
           document.getElementById("scriptDIV").innerHTML = "&nbsp;<script language=\"javascript\" DEFER>"+currentNode.childNodes[0].nodeValue+"<\/script>";          
           break;
          case "alert-message":
           tempStr = currentNode.childNodes[0].nodeValue;
         }

이렇게 처리를 하고 있었는데..
이상하게 6.0에서만 document.location.reload() 부분을 처리하고 나면
게시판에서 글을 작성할때 file부분의 경로가 초기화 되었다.
에러 메세지는
'액세스가 거부되었습니다.' 라는 javascript 에러메세지가 발생했다.

해당 게시판을 수정하느라 한달 반을 삽질 ㅡㅡ; 개발환경이 잘못된건가 해서 서버설정을 다시
해보기도 하고.. 이러저러하다 결국 내가 IE 7.0으로 업그레이드를 해서 해결을 해버렸지만
문제는 개발을 다 하고나서 사용자에게도 같은 문제가 발생... 헉;

그래서 끙끙앓다 해결했지만.. 문제가 게시판과는 전혀상관없는 로그인 부분에 있었기에..
버그라고 할수 밖에 없겠다..

해당 문제에 대해 테스트를 해보지 않아서 왜 'document.location.reload()'에서 버그가 발생하는지
알수는 없지만

IE 6.0에서 innerHTML에 자바스크립트를 넣을 경우 문제가 발생하는것 같다.