파폭에서 insertBefore가 안될때...
WEB2.0 |
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);
'WEB2.0' 카테고리의 다른 글
또 하나의 Chart 오픈 소스. Fusion Chart (0) | 2009.09.07 |
---|---|
[웹표준]W3C Markup Validation (0) | 2009.08.24 |
기업환경에 적합한 RIA선택하기 (0) | 2009.01.28 |
고급 자바스크립트 활용 II (0) | 2008.04.02 |
고급 자바스크립트 활용Ⅰ-Ⅰ (0) | 2008.04.02 |