2017-10-16 167 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

感谢@迈克尔您的答复。当我尝试你建议的方法时,它仍然不起作用。看起来还有别的东西正在打破流动。关于代码,我知道很难在不考虑问题的情况下猜测问题的根本原因。所以会尝试分享我的指令的主要执行流程。 –