티스토리 뷰
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
오늘도 역시나 pop.wimy.com 를 다듬다가 정리하게 된 내용이다.
IE6 에서는 파이어폭스나 크롬과 다른게 "new XMLHttpRequest()" 로 객체를 만들 수 없다. 그래서 이래저래 검색을 하고, pop.wimy.com 에 적용해 가면서 확인한 내용이다.
일단 XMLHttpRequest 는 다음과 같이 객체를 만들면 IE6 를 체크 안하고 사용할 수 있다.
onreadystatechange 콜백을 설정한 후, 콜백 함수 안에서
IE6 에서는 파이어폭스나 크롬과 다른게 "new XMLHttpRequest()" 로 객체를 만들 수 없다. 그래서 이래저래 검색을 하고, pop.wimy.com 에 적용해 가면서 확인한 내용이다.
일단 XMLHttpRequest 는 다음과 같이 객체를 만들면 IE6 를 체크 안하고 사용할 수 있다.
function newXMLHttpRequest()그리고 실제로 request 할 때는 다음을 주의하자.
{
var ret = null;
try
{
ret = new XMLHttpRequest();
}
catch ( e )/// ie 6 에서는 exception 발생
{
try
{
ret = new ActiveXObject("Microsoft.XMLHTTP");
}
catch ( e2 )
{
alert("지원되지 않는 브라우저입니다.");
}
}
return ret;
}
onreadystatechange 콜백을 설정한 후, 콜백 함수 안에서
if ( this.readyState == 4 && this.status == 200 )위와 같이 쓰는 경우가 있는데 이렇게 쓰면 IE6 에서 문제를 일으킨다. 그러므로 다음처럼 전역 변수를 하나두고, 이 전역 변수만을 사용해서 코딩하자.
var musicChartRequest = null;
function onMusicChartResponse(data)
{
/// ... 여기서 하고 싶은 일하기~
}
function musicChartRequestHandler()
{
if ( musicChartRequest.readyState == 4 && musicChartRequest.status == 200)
{
if ( musicChartRequest.responseXML == null )
{
onMusicChartResponse(null);
}
if( musicChartRequest.responseXML.getElementsByTagName('song'))
{
// success!
onMusicChartResponse(musicChartRequest.responseXML);
}
else
{
onMusicChartResponse(null);
}
}
else if (musicChartRequest.readyState == 4 && musicChartRequest.status != 200)
{
onMusicChartResponse(null);
}
}
function requestMusicChart(listValue)
{
musicChartRequest = newXMLHttpRequest();
if ( musicChartRequest == null ) return;
musicChartRequest.onreadystatechange = musicChartRequestHandler;
musicChartRequest.open("GET", "a.xml");
musicChartRequest.send(null);
}
댓글
최근에 올라온 글
- Total
- Today
- Yesterday