Page 1 of 1
FF2에서자바스크립트 안먹는거에 대한 대처방안
Posted: 2006 11 08 15:58 07
by tomochan
비동기 웹방식으로 페이지를 꾸미고 있는데..
XMLHttpRequest놈을 ff2에서 먹지를 않네요...
익스는 잘되는데.....참..애먹고 있는데 대처할 코드나 방안 있나요?
알고계시면 한수 가르침을 선사 부탁드립니다...^^;;
Posted: 2006 11 08 16:08 01
by 흑마법사
전 그쪽에 대해선 완전 문외한입니다만... 약간의 코드를 올려주시는게 도움이 되지 않을까 싶네요. 암튼 XMLHttpRequest 자체는 파폭에서도 지원을 합니다.
XML.com의 글에 의하면
익스에서는
var req = new ActiveXObject("Microsoft.XMLHTTP");
이렇게 하는 것이 모질라/사파리에서는 그냥
var req = new XMLHttpRequest();
이렇게 선언해야 한다는군요. 코드를 모르는 상태에서 문외한이 추측 가능한 것은 이 정도입니다만... ㅠ.ㅠ
도움이 되려나... 흑흑
샘플소스를...
Posted: 2006 11 09 01:59 30
by 박민권
아래의 소스가 도움될거라 생각합니다.
Code: Select all
function newXMLHttpRequest(){ //XMLHttpRequest 객체 생성 및 반환
if(window.XMLHttpRequest){ //IE외 브라우저
try{
req = new XMLHttpRequest(); //XMLHttpRequest 객체 생성
}
catch(e){
req = false; //생성실패
}
}
else if(window.ActiveXObject){ //IE전용
try{
req = new ActiveXObject("Msxml2.XMLHTTP"); //Msxml2.XMLHTTP 객체 생성
}
catch(e1){
try { //Msxml2.XMLHTTP 객체 생성 실패시 옛버전 방식인 Microsoft.XMLHTTP를 생성
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2){ //둘다 실패
req = false;
}
}
}
return req;
}
답변감사합니다.
Posted: 2006 11 10 12:51 47
by tomochan
박민권님
예전 방식을 쓰는건 지금 저의 소스로서는 조금..많이 문제가 있지만..(저의 실력때문이랄까;;;)
그런 방식이 있었군요...
파폭도 조금 더 지원했으면 좋겠다는 생각을 하면서.....
답변 두분다 감사드립니다.
흑마법사님
var req = new XMLHttpRequest();
역시 생성을 못시킨다는점 참..안타까워요 ㅠㅠ
제가 asp.net2.0으로 개발을 해서인지..파폭에서 안되는 부분이 넘 많으네요 ㅠㅠ
Posted: 2006 11 10 13:21 57
by 흑마법사
흐음... 이건 질문입니다만... 전에 답글 올릴때 읽은 글에서 받은 늬앙스는 익스랑 타 브라우저는 선언 방법 자체가 다르다는 거였거든요. 모든 브라우저에서 한방에 해결하는 방법이 가능하긴 한가요?
제가 생각하기엔 결국 민원님이 올려주신 소스랑 유사한 형태를 띄게 될거 같은데...
해결 방안 찾으시면 꼭 올려 주세요. ^^
문제가 이게 아니었나봅니다...^^;;
Posted: 2006 11 10 14:00 47
by tomochan
민원님 소스대로 테스트를 해본결과
제가 가지고 있는 웹브라는 IE모듈이거나 FF2이기땜시 이것밖에 테스트를 못해보았지만
일단 IE6일경우
소스를 보시면 alert가
3이 뜹니다.
그리고 서버측에서 주는 인자값은 true라는 값인데 잘 받아서 true라는 메세지가 뜨네요
하지만 FF2일 경우
1을 타고 아주 잘 생성하네요;;
그렇지만 서버값을 받는 ResponseText를 못돌리는 것인지
받지를 않습니다.
좀 다른 포럼을 돌아다녀도 제 눈에는 보이지 않으네요..
알고계신분 계신가요?
function newXMLHttpRequest()
{
var req;
//XMLHttpRequest 객체 생성 및 반환
if(window.XMLHttpRequest)
{ //IE외 브라우저
try
{
req = new XMLHttpRequest(); //XMLHttpRequest 객체 생성
alert('1');
}
catch(e)
{
//생성실패
alert('2');
}
}
else if(window.ActiveXObject)
{ //IE전용
try
{
req = new ActiveXObject("Msxml2.XMLHTTP"); //Msxml2.XMLHTTP 객체 생성
alert('3');
}
catch(e1)
{
try
{ //Msxml2.XMLHTTP 객체 생성 실패시 옛버전 방식인 Microsoft.XMLHTTP를 생성
req = new ActiveXObject("Microsoft.XMLHTTP");
alert('4');
}
catch(e2)
{ //둘다 실패
alert('5');
}
}
}
var Url = "test2.aspx?test=1";
req.open("POST", Url, false);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null);
var name = req.ResponseText;
if (name =="true")
{
alert(name);
}
else
{
alert(name);
}
}
Re: 답변감사합니다.
Posted: 2006 11 10 16:08 33
by 빛알갱이
tomochan wrote:
파폭도 조금 더 지원했으면 좋겠다는 생각을 하면서.....
무슨 말씀이신지? Windows가 아닌 플랫폼에서 돌아가는 브라우저들이 XMLHttpRequest를 지원하기 위해 ActiveX object를 부르는 방식을 써야 한다는 얘기는 아니시겠지요?
이 글타래의 다른 부분에 물으신 질문 : 서버에서 온 응답이 FF에서 안 보이는 이유는 responseText라고 하셔야 할 자리에 ResponseText라고 하셨기 때문입니다. 'R'이 아니라 'r'입니다.
앗;;;;
Posted: 2006 11 10 17:34 50
by tomochan
빛알갱이님 감사합니다...저의 대소문자의 무지함이 이런실수를;;;
지금까지 IE를 위한 개발만 하다보니..대소문자에 신경을 안쓰게 되서요;;
아주 잘되네요...위의 그 스크립트는....그냥 테스트를 위해 대충대충;;;;;ㅎㅎㅎㅎㅎ
감사합니다...또 하나 배우게 되네요 ^^
헉
Posted: 2006 11 12 17:03 32
by 박민권
흑마법사님 제 이름은 민원이 아닙니다. ㅠㅠ