2014-04-14 1 views
2

jQuery를 사용하여 HTML 요소를 div 요소의 자식 노드로 삽입하려고합니다.jQuery throw SCRIPT5022 : Internet Explorer (IE)에서 jQuery 객체를 추가하려고하면 HierarchyRequestError가 발생합니다.

var table = $('#tableId').clone(); 

$('#divId').append(table); 

jsFiddle

이 코드는 크롬과 파이어 폭스, 아니 문제에 대해 잘 작동, 아직 내가 인터넷 익스플로러 (IE) 10에서 테스트 할 때 IE 콘솔과 같은 오류가 발생합니다 : 내 코드는 다음과 같이 보입니다 이 :

SCRIPT5022 : HierarchyRequestError

내 인터넷 검색이 MSDN 문서에 나와 포인트 :

http://msdn.microsoft.com/en-us/library/ie/gg592979(v=vs.85).aspx

오류 메시지에 다음을 지정합니다. 노드를 요청한 위치에 삽입 할 수 없습니다. 하지만 왜?

동일한 오류가 발생하여 prepend()를 시도했습니다. 어떤 이유로 table.appendTo()를 사용할 수 없습니다. appendTo가 3 가지 브라우저 모두에서 작동하지 않습니다.

누군가이 문제를 해결할 수있는 방법에 대한 단서를 주면 감사하겠습니다. 감사.

업데이트 :이 jsFiddle : http://jsfiddle.net/phamductri/LSaDA/에서 효과를 확인할 수 있습니다. 크롬과 파이어 폭스를 사용해보세요. IE가 정상적으로 작동합니다.

업데이트 : jQuery 버전을 1.11.0 또는 2.1.0으로 변경하면 코드가 작동합니다. 그러나 새로운 윈도우에서 div 요소에 테이블을 추가하려고하면 다음과 같이 window.opener.table을 참조하십시오. $ ('# divId'). append (window.opener.table); Firefox 및 Chrome에서 작동하지만 IE에서는 작동하지 않습니다.

업데이트 : jQuery를 건너 뛰고 내장 JavaScript 함수를 사용하면이 문제가 발생한다는 것을 발견했습니다. 여기에 또 다른 질문이 있습니다. Internet Explorer throws SCRIPT5022: HierarchyRequestError when trying to appendChild an HTML object from another window

+0

문제를 재현하기 위해 데모를 게시 할 수 있습니까? Try http://jsfiddle.net – elclanrs

+0

방금 ​​업데이트되었습니다. 감사합니다. – phamductri

+0

ID는 고유해야합니다. 클래스를 사용해보십시오. – elclanrs

답변

7

이것은 인터넷 탐색기의 보안 기능인 것 같습니다. Internet Explorer의 한 창에서 다른 창으로 DOM 노드 또는 jQuery 객체를 추가 할 수 없습니다. 다른 브라우저에서도 작동합니다. 노드는 열린 창과 오프너 사이를 단순히 지나칠 수 없습니다.

당신이 jQuery를 객체가 다음 follows-

var table = $('#tableId').clone(), tableHtml = table[0].outerHTML; 

로 outerHTML에를 DOM 요소로 변환하고 취할 수있는 경우 또는 당신은 일반 자바 스크립트에 충실하고 쓰기 방지 할 수

var tableHtml = document.getElementById('tableId').outerHTML; 

다음과 같이 원하는 DOM 요소의 innerHTML을 설정하여 창 문서에 추가 할 수 있습니다.

$('#divId')[0].innerHTML = tableHtml ; 

또는

document.getElementById('divId').innerHTML = tableHtml; 

또는

document.querySelector('#divId').innerHTML = tableHtml; 

내가 실제 문서가이 진술하거나 뒤에 이론적 근거를 제공 참조 아직,하지만 난 그것을 다른 StackOverflow의 질문에 인용 보았다 Internet Explorer로 작업 할 때 본 행동과 확실히 일치합니다.

링크 된 질문에서 NoGray에 모자 팁.

관련 문제