2011-09-14 3 views
2

나는 잠시 동안 CMS를 작성해 왔으며 현재는 마지막 몇 가지 사항을 다루고 있습니다. 그 중 하나는 Lightbox 스타일의 윈도우에서 tinyMCE 편집기를 제공하기 위해 ajax를 사용하는 것을 포함합니다.완전히 새로 고침 TinyMCE

로드 할 때 처음 완벽하게 작동하지만 두 번째 이상 실행하면 요소 이름이 엉망이되어 데이터를 보내지 않거나 TinyMCE에 현재 값을 표시합니다. 창문. 요소를 검사 할 때 Chrome을 사용하면 이전 tinyMCE 창이 포함 된 기간이 아직 있음을 알 수 있습니다.

저는 document.body.removeChild를 사용하여 div를 제거합니다. 누구든지 아이디어가 있습니까?

추가 :

AJAX 다시 (이 창에 어떤 일이 일어 나는지의 모든 HTML 코드를 가지고) 요청을에서 얻을 때, 그것은 새로운 div 요소를 생성하고 추가 document.body.appendChild를 사용

요소를 문서에 추가하고 html 코드를 div 태그에 넣습니다.

그런 다음 새 코드로 이동하여 해당 영역 (그 중 하나는 MCE 초기화 프로그램)에있는 스크립트를 검색하고이를 헤드에 추가하여 스크립트를 실행합니다.

사용자가 저장하지 않고 취소를 클릭하면 을 사용하여 div 태그가 제거됩니다. document.body.removeChild (document.getElementById ("popupbox"))); 잘 작동하지만

그러나 내가 팝업을 불러 와서 이전에 말했던 것처럼 다시 채우고 거기서 요소를 검사하면 TinyMCE에서 만든 스팬이 여전히 있으며 이름이 바뀌 었습니다. 'content', 어떤 이유로 8 개가되었습니다) 편집기 영역에 내용이 없습니다.

나는 사용했다 : tinyMCE.execCommand ('mceRemoveControl', true, 'mce {$ Setting ['name ']}'); tinyMCE.editors [0] .destroy();

그러나 어느 것도 작동하지 않습니다. 그들은 tinymce 창을 텍스트 영역으로 되돌려 놓았지만 요소는 여전히 존재합니다.

+1

tinyMCE를 호출 할 때 크롬 인스펙터의 첫 번째 및 두 번째 반복에 대한 소스 코드를 게시 할 수 있습니까? – Jake

답변

1

tinymce iframe을 유지하는 html 요소를 이동하거나 제거하기 전에 설명 된대로 올바른 tinymce 편집기 id를 사용하여 편집기를 제거하는 것이 좋습니다. 어디서 tinymce.js를로드합니까? 아약스를 사용하여 전달하는 경우 상위 페이지 (!)에로드하는 것이 더 나을 것이라고 생각합니다. 좀 더 많은 코드가 도움이 될 것입니다.

편집 : 나는 남은 기간을 제거해야하는 상황을 기억합니다. 여기에 대한 내 코드는 다음과 같습니다.

 // remove leftover span 
     $('div .mceEditor').each(function(item){ 

      if (typeof $(this).attr('style') !== "undefined"){ 
       $(this).removeAttr('style'); // entfernt "style: none"; 
      } 
      else { 
       $(this).remove(); 
      } 
     }); 
+0

tiny_mce.js 파일이 포함되어 있으며, div는 div.innerHTML = ajax.responseText로 채워집니다. responseText는 그 안에 tinymce.init 함수가있는 스크립트 스니 j을 포함하여 html 요소의 콜렉션입니다. 그 스크립트는 모두 끝나면 실행됩니다. 나는 실행 된 원래 스 니펫으로 처음에 번들로되는 언로드 스 니펫을 가지고 있지만 execCommand (mceRemoveControl) 및 .destroy()는 작동하지 않습니다. 잠시 동안 창을 닫으면 페이지가 새로 고침되고 다시 작동합니다. – topherg

+0

내 수정 된 게시물보기 – Thariama

관련 문제