불여우insertBefore 의 동작

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
댓글 게시
blueruin
게시물: 2
참여됨: 2007 11 23 05:27 41
연락:

불여우insertBefore 의 동작

게시물 작성자 blueruin » 2007 12 29 15:13 17

코드: 모두 선택

<html>
    <head>
        <script>
            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.php","_blank");
                frm=AddHidden(frm,"m","mode1");
                document.insertBefore(frm);
                frm.submit();
            }
        </script>
    </head>
    <body>
        <input>
    </body>
</html>

form 을 만들어 submit 하는코드인데 익스에선 동작하는데 파폭에서 동작을 하지 않습니다.
콘솔에서 에러는 다음과 같이 출력됩니다.

uncaught exception: [Exception... "Not enough arguments" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: c://test.html :: AddHidden :: line 18" data: no]
Line 0

검색해보니 insertBefore 가 파폭에서 동작안하니 appendChild 를 사용하라는 글이 있어 해보았지만 역시 안됩니다.
어떻게 해야할까요?

peecky
게시물: 16
참여됨: 2007 06 22 19:06 49
연락:

게시물 작성자 peecky » 2007 12 29 22:50 07

insertBefore는 두 개의 파라메터가 필요합니다. 엘리먼트를 삽입할 위치를 지정할 때 사용하는것인데, 코드상 삽입 위치는 중요하지 않은것 같으니 appendChild를 사용해도 무방합니다.

appendChild를 쓸 경우

코드: 모두 선택

document.appendChild(frm)
이 부분때문에 에러가 발생합니다. <form>객체를 document객체 하위로 바로 넣지말고, <body>객체 하위에 넣어보세요.

댓글 게시

누군가 접속

유저들이 이 포럼을 탐색중: 가입된 유저 없음 그리고 11 손님들