WEB2.0
파폭에서 insertBefore가 안될때...
시반
2010. 6. 17. 11:02
IE에서는 정상적으로 동작하는데 Firefox에서는 동작되지 않는다는 말이 있어 소스코드를 열어보니
다음과 같은 코드문제였다.
예전에 동적으로 폼객체를 만들어 전송할때 많이 사용들 했던 자바 스크립트 코드...
실제로 보면 크게 문제 될것 같지 않는데 동작되지 않는 이유는..바로 insertBefore에 있다.
DOM 의 insertBefore 인자는 두개. 두번째 인자는 추가될 위치를 명시할 때 사용되는데
이 두번째 인자가 빠졌기 때문에 동작되지 않았던 셈...
또 하나 웹표준화와 더불어 Form객체는 body아래에 존재해야 하기 때문에 form 객체를 document 하위가 아닌 document.body 아래 넣어야 한다. 결국 다음과 같이 수정하면 끝.
다음과 같은 코드문제였다.
function CreateForm(nm,mt,at,tg){
var f=document.createElement("form");
f.name = nm;
f.method = mt;
f.action = at;
f.target = tg;
return f;
}
function AddHidden(f,n,v) {
var i=document.createElement("input");
i.type = "hidden";
i.name = n;
i.value = v;
f.insertBefore(i);
return f;
}
function Run(){
var frm = CreateForm("form1","post","action.jsp","_blank");
frm=AddHidden(frm,"m","mode1");
document.insertBefore(frm);
frm.submit();
}
예전에 동적으로 폼객체를 만들어 전송할때 많이 사용들 했던 자바 스크립트 코드...
실제로 보면 크게 문제 될것 같지 않는데 동작되지 않는 이유는..바로 insertBefore에 있다.
var insertedElement = parentElement.insertBefore(newElement, referenceElement);
DOM 의 insertBefore 인자는 두개. 두번째 인자는 추가될 위치를 명시할 때 사용되는데
이 두번째 인자가 빠졌기 때문에 동작되지 않았던 셈...
또 하나 웹표준화와 더불어 Form객체는 body아래에 존재해야 하기 때문에 form 객체를 document 하위가 아닌 document.body 아래 넣어야 한다. 결국 다음과 같이 수정하면 끝.
document.body.insertBefore(frm,null);