2017-10-16 4 views
1

나는 이전의 tinymce 4.3.1에서 업그레이드 된 tinymce 4.7.1을 사용하려고합니다. 내가 프로그래밍 방식의 setContent를 호출하여 TinyMCE에의 내용을 설정하려고하면 오류 다음 던지고있다 :setContent를 실행하는 동안 TinyMce가 실패합니다

Cannot read property 'parse' of undefined TypeError: Cannot read property 'parse' of undefined 

오류의 세부 사항을 조사 후, 나는 TinyMCE에 그것은 TinyMCE에이야 내에서 직렬화 된 클래스가 기대된다 알고 있습니다. dom이 클래스가 없으면이 오류를 구문 분석 할 수 없습니다.

여기에 (나를 위해 버전 4.3.1을 제대로 작동하는 데 사용) 이전 버전에 비교 TinyMCE에

else { 
      // Parse and serialize the html 
      if (args.format !== 'raw') { 
      content = new Serializer({ 
       validate: self.validate 
      }, self.schema).serialize(
       self.parser.parse(content, { isRootContent: true }) //this line is throwing error 
      ); 
      } 

에서 조각 직렬화 클래스에 이런 의존성이 없다입니다.

내 코드를 작동시키기 위해 더 많은 플러그인이나 클래스 (기본 패키지에 포함되어 있지 않음)를 추가해야한다고 제안 할 수 있습니까?

내 관찰 : 격리 된 프로토 타입 예제에서 나는 tinymce를 클라우드에서 호스트 할 때 잘 동작했습니다.

답변

0

내가 조언을 부분적으로이 문제를 해결 할 수 있었다 @Michael에 의해 주어진다. 그래서 제 경우에는 두 가지 문제가있었습니다. 내가 최신 플러그인과 JS 파일을 사용하는 TinyMCE를 업그레이드했다하더라도

  1. , 난 여전히 내가 롤아웃 할 수 있도록 내가 TinyMCE에 두 DIFF verions을 유지하고 있기 때문입니다 (themes.min.js의 이전 버전으로 언급했다 이 버전은 새 버전과 호환되지 않는 제한된 페이지로 먼저 업그레이드됩니다. 이것은 주석 편집기의 일관성없는 초기화를 초래합니다. 일단 테마 파일의 소스를 수정하면 편집기가 올바르게 초기화됩니다.
  2. 내 tinymce 편집기가 제대로로드되지 않았고 setContent 메소드를 실행하여 오류가있는 내용을 설정하려고 시도한 경우가있었습니다 (@Michael이 지적한대로). 그래서 setContent 호출을 잘 작동하는 객체에 노출 된 setup 메소드로 옮겼습니다.
1

setContent()을 어떻게 사용하고 있는지 보여주는 실행 코드를 보여줄 수 있습니까? init() 메서드가 비동기이므로 편집기를 완전히 초기화하기 전에 호출하려고합니다.

에디터가 완전히 초기화 될 때까지 대기하고 있는지 확인하는 가장 쉬운 방법은 에디터가 제공하는 init 이벤트에 의존하는 것입니다

tinymce.init({ 
    selector: '#myTextarea', 
    ... 
    ... 
    setup: function (editor) { 
    editor.on('init', function() { 
     editor.setContent('Using the on init stuff!'); 
    }); 
    } 
}); 
+0

@Michael에게 감사드립니다. 당신의 제안 된 접근 방식을 시도 할 때 여전히 작동하지 않습니다. 흐름을 깨고있는 뭔가가있는 것처럼 보입니다. 코드에 관해서는 문제를 조사하지 않고 문제의 주요 근본 원인을 추측하는 것이 정말 어렵다는 것을 알고 있습니다. 그래서 내 지시어의 주요 실행 흐름을 공유하려고합니다. –