2017-10-16 75 views
1

我試圖將TinyMCE 4.7.1(從我的舊的TinyMCE的4.3.1升級)。當我嘗試以編程方式通過調用方法setContent設置TinyMCE的內容,它拋出以下錯誤:TinyMCE的失敗而執行setContent

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

尋找到錯誤的詳細信息後,我才意識到TinyMCE的期待有序列化類中它的TinyMCE的。在沒有這個類的情況下,它無法解析這個錯誤。

這裏是從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 
      ); 
      } 

相較於以前的版本(用於正常工作對我來說,版本4.3.1)的片段有上連載類中沒有這樣的依賴。

有人建議,如果我要添加更多的插件或類,以便讓我的代碼工作(這是在默認包不發貨)?

我的觀察:在一個孤立的原型示例中,當我運行託管在雲上的tinymce時,它工作正常。

回答

0

我能夠與建議部分解決這個問題由@邁克爾給出。所以在我的情況下有兩個問題。

  1. 儘管我已經升級TinyMCE的使用最新的插件和js文件,我還是指的是舊版本themes.min.js的(這是因爲我保持TinyMCE的兩個差異verions,這樣我可以首次展示此版本將首先逐一升級到有限的頁面),這與新版本不兼容。這會導致tinymce編輯器的初始化不一致。一旦我固定主題的源文件,它初始化的編輯正確
  2. 有一些情況下,在我的TinyMCE的編輯器未正確加載,我試圖執行setContent方法來設置這將導致錯誤的內容(如@邁克爾指出)。所以我將setContent調用移動到暴露在運行良好的對象中的安裝方法。
1

能否請你展示一些運行的代碼將告訴您如何使用setContent()?我懷疑你正試圖調用之前完全初始化編輯器爲init()方法是異步的。

,以確保您等待,直到編輯器完全初始化最簡單的方法是依靠init事件,該編輯器提供:

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

感謝@邁克爾您的答覆。當我嘗試你建議的方法時,它仍然不起作用。看起來還有別的東西正在打破流動。關於代碼,我知道很難在不考慮問題的情況下猜測問題的根本原因。所以會嘗試分享我的指令的主要執行流程。 –