tinyMCE - tinyMCE.triggerSave() 与tinyMCE.get("id_here").triggerSave()

问题描述 投票:0回答:1

多年来我一直愉快地使用tinyMCE。今天开始使用新的网络表单时,我在访问编辑器时遇到了两个我以前从未遇到过的问题:

首先,使用jQuery.ready调用tinyMCE.init来初始化

<textarea id="message_content" name="content"></textarea>
,然后调用一个通过AJAX检索数据的函数来初始化
<textarea>
是字段的表单,但发现
tinyMCE.get("message_content")
返回了一个对象没有
setContent
功能。幸运的是,我通过使用 setTimeout 将加载函数的调用延迟 100 毫秒来使其工作。我没有意识到
tinyMCE.init
中有异步活动,我必须等待。我之前的项目是不是很幸运?

其次,当提交表单时尝试调用

triggerSave()
时,即使在解决了第一个问题之后,
tinyMCE.get("message_content")
也传递了一个没有
triggerSave
函数的对象。奇怪的是,仅使用
tinyMCE.triggerSave()
就可以在提交之前更新表单字段,因为页面上只有一个。

我在这两种情况下都对 textarea id 的拼写进行了三次检查。我通过多年来使用的同一个 PHP 函数发出tinyMCE.init,该函数获取应初始化 tinyMCE 的所有字段的元素 id,在本例中只有一个字段。

我对tinyMCE有什么不理解的地方,这可以解释为什么在这两种情况下

tinyMCE.get("message_content")
没有返回
<textarea>
的编辑器?预先感谢您的任何提示。我正准备敲头呢……

tinymce tinymce-4
1个回答
0
投票

对于第一点:

tinymce.init()
返回一个
Promise
,所以如果你想同步使用它,你需要
await
它。请参阅
tinymce.init()
API 文档。

对于你的第二个问题,你似乎误解了API。

Editor
没有
triggerSave()
方法,它们有
save()
方法。
tinymce.triggerSave()
方法会触发页面上每个
save()
实例上的
Editor
方法。请参阅 API 文档了解
triggerSave()
save()

© www.soinside.com 2019 - 2024. All rights reserved.