执行 setContent 时 TinyMce 失败
TinyMce fail while executing setContent
我正在尝试使用 tinymce 4.7.1(从我的旧版 tinymce 4.3.1 升级而来)。当我尝试通过调用方法 setContent 以编程方式设置 tinymce 的内容时,它抛出以下错误:
Cannot read property 'parse' of undefined TypeError: Cannot read property 'parse' of undefined
在查看错误的详细信息后,我意识到 tinymce 期望在它的 tinymce.dom 中序列化 class 并且在没有这个 class 的情况下它无法解析这个错误。
这是来自 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)相比,对序列化 class 没有这种依赖。
有人可以建议我是否必须添加更多插件或 classes(默认包中未提供)以使我的代码正常工作吗?
我的观察:在一个孤立的原型示例中,当我 运行 tinymce 托管在云上时它运行良好。
您能否展示一些 运行 代码来说明您如何使用 setContent()
?我怀疑您正试图在编辑器完全初始化之前调用它,因为 init()
方法是异步的。
确保等待编辑器完全初始化的最简单方法是依赖编辑器提供的 init
事件:
tinymce.init({
selector: '#myTextarea',
...
...
setup: function (editor) {
editor.on('init', function () {
editor.setContent('Using the on init stuff!');
});
}
});
根据@Michael 提供的建议,我部分解决了这个问题。所以就我而言,有两个问题。
- 即使我升级了 tinymce 以使用最新的插件和 js 文件,我仍然指的是旧版本的 themes.min.js(这是因为我正在维护 tinymce 的两个不同版本,以便我可以推出这个版本先逐个升级到有限的页面)与新版本不兼容。这导致 tinymce 编辑器的初始化不一致。一旦我修复了主题文件的来源,它就正确地初始化了编辑器
- 在某些情况下,我的 tinymce 编辑器没有正确加载,我试图执行 setContent 方法来设置导致错误的内容(正如@Michael 指出的那样)。因此,我将 setContent 调用移至运行良好的对象中公开的设置方法。
我正在尝试使用 tinymce 4.7.1(从我的旧版 tinymce 4.3.1 升级而来)。当我尝试通过调用方法 setContent 以编程方式设置 tinymce 的内容时,它抛出以下错误:
Cannot read property 'parse' of undefined TypeError: Cannot read property 'parse' of undefined
在查看错误的详细信息后,我意识到 tinymce 期望在它的 tinymce.dom 中序列化 class 并且在没有这个 class 的情况下它无法解析这个错误。
这是来自 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)相比,对序列化 class 没有这种依赖。
有人可以建议我是否必须添加更多插件或 classes(默认包中未提供)以使我的代码正常工作吗?
我的观察:在一个孤立的原型示例中,当我 运行 tinymce 托管在云上时它运行良好。
您能否展示一些 运行 代码来说明您如何使用 setContent()
?我怀疑您正试图在编辑器完全初始化之前调用它,因为 init()
方法是异步的。
确保等待编辑器完全初始化的最简单方法是依赖编辑器提供的 init
事件:
tinymce.init({
selector: '#myTextarea',
...
...
setup: function (editor) {
editor.on('init', function () {
editor.setContent('Using the on init stuff!');
});
}
});
根据@Michael 提供的建议,我部分解决了这个问题。所以就我而言,有两个问题。
- 即使我升级了 tinymce 以使用最新的插件和 js 文件,我仍然指的是旧版本的 themes.min.js(这是因为我正在维护 tinymce 的两个不同版本,以便我可以推出这个版本先逐个升级到有限的页面)与新版本不兼容。这导致 tinymce 编辑器的初始化不一致。一旦我修复了主题文件的来源,它就正确地初始化了编辑器
- 在某些情况下,我的 tinymce 编辑器没有正确加载,我试图执行 setContent 方法来设置导致错误的内容(正如@Michael 指出的那样)。因此,我将 setContent 调用移至运行良好的对象中公开的设置方法。