WEB2.0

파폭에서 insertBefore가 안될때...

시반 2010. 6. 17. 11:02
IE에서는 정상적으로 동작하는데 Firefox에서는 동작되지 않는다는 말이 있어 소스코드를 열어보니
다음과 같은 코드문제였다.

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);