2

다음 코드는 Firefox와 Chrome에서 제대로 작동하지만 IE에서 두통을 불러 일으 킵니다.Internet Explorer Javascript를 사용하는 AppendChild 문제

var anotherDiv= document.getElementById("anotherDiv"); 
var destination = document.getElementById("mySourceDiv");  
destination.appendChild(anotherDiv); 

Div 요소를 가져 와서 다른 div 안에 넣으려고합니다. IE에서 디버그 콘솔의 "인터페이스가 지원되지 않습니다"와 유사한 오류 메시지가 표시되고 appendChild 행을 가리킨다. 내가 본 것은 대상 변수의 유형이 DOM 요소가 아니라 객체라는 점입니다.

mySourceDiv에 anotherDiv를 추가하려면 어떻게해야합니까? IE 8에서이 문제를 해결하려고합니다.

+0

당신이 그것을 다시 추가하기 전에 "anotherDiv"의 부모로부터 "에서 removeChild"를 호출 명시 적으로 시도 유무 :

이 당신이 올바른 방향으로 가야 하는가? – Pointy

+0

나는 크롬과 파이어 폭스가 자동으로 그 div를 제거하려고한다. – Romeo

+0

@Pointy 시도해 보았지만 작동하지 않습니다. window.opener.document.getElementById ("...")에서 해당 div에 대한 참조를 가져오고 DOM 객체가 아니라 객체를 반환합니다. removeChild 할 때 잘못된 인수가 가져옵니다. 내가 옮기려하는 div는 다른 창에서 왔고, 그 팝업에 배치하려고합니다. – Romeo

답변

-2

브라우저 비 호환성 문제를 해결하기 위해 고안된 라이브러리를 사용하는 것이 좋습니다. 개인적으로 jQuery가 꽤 좋았다고 생각했습니다. jQuery에는 append 함수가 있습니다.

+0

나는 이미 jQuery를 시도했지만 불행히도 같은 오류가 발생한다. – Romeo

+0

위의 의견을 보면 IE의 Bing Maps 객체에 문제가있는 것 같아 보입니다. jQuery.detach() 및 jQuery.append()를 사용하여 다른 Div 요소를 이동 시키려고 시도 했습니까? 그것은 적어도 문제가있는 곳을 좁히는 데 도움이 될 것입니다. – bsegraves

+0

[append] (http://jsapi.info/jquery/1.7/jQuery.fn.append)는'appendChild'를 호출합니다. 그래도 문제가 해결되지 않습니다. – Raynos

0

아마도 importNode와 같은 것이 필요할 것이며, 다양한 크로스 브라우저 솔루션이 있습니다. 문제는 각 노드가 IE에 대응하는 문서 개체를 가지고 있으므로 보안이 한 문서에서 다른 문서로 멋진 움직이는 것을 재생하지 못한다는 것입니다.

기본적으로 딥 클론을 사용하고 있지만 cloneNode 사용의 차이점은 cloneNode가 원치 않는 문서도 설정한다는 것입니다. IE support for DOM importNode

+0

게시 한 링크를 살펴 보겠습니다. 이 div에서 복제본을 수행 할 수 없습니다. Bing Maps의 일부 동적 응답이 포함되어 복제 할 때 정적 인 이미지로 표시됩니다. – Romeo

+0

당신은 복제본을 호출하지 않습니다. 기본적으로 현재 객체를 반복하고 모든 속성, 하위 노드 등을 정확히 다시 생성합니다. importNode 스펙을 살펴보면 수행해야 할 작업에 대한 아이디어를 얻을 수 있습니다. 그러나 그것은 그 문제보다 더 가능성이 있습니다. 희망이 도움이됩니다. –

+0

나는 그것을 조사 할 것이다. 감사 – Romeo