2017-10-22 3 views
0

현재 CKEditor 4를로드하는 데 지연 문제가 있음을 발견했습니다. 나는 시도하는 것 : ckeditor_basic.js 포함지연로드 CKEditor 4

  • 그러나 이것은 이미 클릭에 CKEDITOR 예를
  • 로드 ckeditor.js이 필요하지만이되지 않습니다 주 스레드에서 '동기 XMLHttpRequest의 불평 때문에 그것의 해로운 효과 최종 사용자의 경험.' 뿐만 아니라 일부 다른 오류는 잘못 처리됩니다.

감사합니다.

+0

사례에 대해 자세히 설명해 주시겠습니까? 그것은 스크립트를 삽입하고 그것에 편집기를 초기화하는 것이 가능합니다 https://codepen.io/j_swiderski/pen/qPGRGb하지만이게 당신이 찾고 있는지 확실하지 않습니다. –

+0

고마워요. 정확히 JS를로드하고 'CKEDITOR.appendTo'를 사용하려고하면 클릭시로드하려고하는데, 'CKEditor is not defined'오류가 발생합니다. 귀하의 예에서 그들은 별개의 행동입니다. 사용자가 페이지를로드 할 때 편집기가로드되기를 원하지 않는데 실제로 뷰의 %만큼 낮은 것을 게시 할 때만입니다. thanks – InContext

+0

스크립트가 완전히로드되기 전에 대부분 'appendTo'가 호출되고 있습니다. 이 문제를 해결하기 위해서 주기적으로'CKEDITOR' 객체가 사용 가능한지 여부를 확인할 수 있습니다. 'setInterval' https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval을 사용하고 CKEditor가로드되면 간격을 삭제할 수 있습니다. 여기에 설명 된 두 가지 방법 중 하나를 사용할 수도 있습니다. https://stackoverflow.com/questions/3768768/loading-javascript-dynamically-and-how-to-check-if-the-script-exists https : // gist.github.com/AllThingsSmitty/889acd01889c84ff162c –

답변

1

CKEditor 스크립트를 동적으로 삽입하려면이 코드의 기술을 사용하면됩니다. https://codepen.io/j_swiderski/pen/qPGRGb. 편집기 인스턴스를 만들기 전에 ckeditor.js이로드 될 때까지 기다려야합니다. setInterval을 사용하여 CKEDITOR 개체를 사용할 수 있는지 확인하는 것이 좋습니다.

작성한 의견에 페이지를로드 할 때마다 편집기가로드되지 않도록하십시오. 그 이유 중 하나는 ckeditor.js 파일의 크기 일 수 있습니다. editor.js이 너무 크다고 생각하면 실제로 필요한 플러그인의 수를 스스로 결정한 다음 online builder을 사용하여 필요에 따라 편집기를 만드는 것이 중요합니다. dev-tools를 사용하여 아래 샘플을보고 ckeditor.js 크기의 차이를 확인하십시오. Full package600KB이고 Basic Package400KB입니다. 기본 서식이 필요한 경우 ckeditor.js은 더 작아 질 수 있으며 페이지를로드 할 때 문제가되지 않아야합니다.

사용자 정의 플러그인을 작성한 경우 Github에서 source code CKEditor를 가져 와서 포크로 변경하고 사용자 정의 플러그인을 변경하거나 추가하십시오 (build your editor). 그렇게하면 커스텀 플러그인을 포함하는 편집기 인스턴스가 점점 더 복잡해지고 페이지가로드 될 때 문제가되지 않습니다.