container.html 과 contents.html 이 있다고 하자.
일단 contents.html은 그냥 브라우져로 접속하면 잘 보이는 페이지다.
container.html은 내부에 div tag가 하나 있고 그 안에 contents.html의 내용을 보여주고 싶다.
물론 IFrame을 쓰면 간단하지만 그냥 div로 하고 싶다고 가정하자.
이를 구현하려면 container.html에서 XMLHttpRequest를 생성해서 contents.html을 읽은 후 html tag와 head 및 그 이하 태그들은 필요 없고 body tag내의 내용만 가져와서 container.html의 div.innerHTML에 넣으면 된다.
그런데 이렇게 구현하는 데는 문제가 있다. 이에 대한 같은 고민을 한 글을 찾을 수 있었다.
XMLHTTP notes: responseXML and IE bug
body tag만을 읽어오기 위해서는 DOM으로 접근 가능해야 하는데(물론 Parsing을 직접하면 되지만 그러기에는 기분이 나쁘다) 그러기 위해서는 responseXML을 사용해야 한다. 그런데 이 responseXML은 당연하게도 xml 문서에 대해서만 적용이 가능하다.
그런데 내가 읽어려고 하는 문서는 html 문서이다. 혹 xhtml 이라 하더라도 확장자가 html인 이상 Web Server에서 text/html로 보내준다. responseXML은 mimeType이 text/xml 일때만 제대로 동작한다.(Opera 제외)
Firefox에서는 XMLHttpRequest 객체에 overrideMimeType()이라는 메소드가 있어서 ‘text/xml’로 미리 세팅해 줄 수 있다.
즉, Firefox, Opera에서는 방법이 있는데 그 외의 브라우져가 문제다(I.E) 포함.
결국 contents.html을 읽어서 mimetype만 text/xml로 뿌려주는 서블릿을 만들었는데 더 좋은 방법이 있지 않을까?