tinymce - TinyMCE 自动保存插件和 localStorage
问题描述
默认情况下,TinyMCE 的自动保存插件将编辑器的文本存储在 localStorage 中。有没有办法告诉它使用不同的存储引擎?最终我想要做的是在事件上设置一个监听器,storeDraft
这样我就可以将内容保存到我们的服务器,这样即使在超过 autosave_retention 限制之后用户也可以访问内容。我知道我可以将 autosave_rentention 设置为 0,但即使我这样做了,我也可以看到它仍然将数据写入 localStorage - 它只是将其删除(尽管有时不会立即删除,并且在某些情况下似乎是页面重新加载短路例)。
所以基本上,我想用一颗石头击中 2 只鸟。我想阻止 TinyMCE 将数据存储在 localStorage 中,如果我可以指定不同的“数据存储”,那么也许我可以将它指向我的 ajax 处理程序,该处理程序将持续到后端。
任何建议将不胜感激!
谢谢,
克里斯托夫
解决方案
该autosave
插件旨在与本地存储一起使用,并且无法更改为不同的存储机制。如果您想将数据存储在您的服务器上,您通常会使用一些自定义代码,这些代码使用 (a) TinyMCE 事件或 (b) 计时器来获取编辑器的当前内容,然后将其发送到服务器。
如果您想使用 TinyMCE 事件 ( https://www.tiny.cloud/docs/advanced/events/#editorevents ) 来触发此过程,您将拥有以下代码:
tinymce.init({
selector: "textarea",
...
setup: function (editor) {
editor.on('init change NodeChange Dirty', function (e) {
// 1. use getContent() to extract the editor's current HTML
// 2. send the HTML to your server
});
}
});
如果您想使用基本计时器(例如setTimeout()
),您将使用它来触发与上面示例代码相同的两个操作。
从理论上讲,您可以修改autosave
插件以将数据发送到您的服务器,而不是将数据存储在本地存储中,但我认为您可以以更简单的方式做您需要的事情,而无需深入研究现有的约 200 行代码插入。
推荐阅读
- python - 将值从字典写入 csv 行的问题
- audiounit - 在 AVAudioEngine AVAudioPlayerNode 输出似乎不是 AVAudioUnitNode 输入
- pip - vagrant box 和 host 上的 pexpect 版本都是 4.6.0,但是通过 ansible 安装时,3.1 是最新版本
- math - 如何将数字增加一定百分比(例如 %10)的指数次数(例如 20),然后再次将其减少到基值?
- javascript - 窗口加载时 innerHTML = 'null' 的解决方法
- visual-studio - 我在 Visual Studio 中没有扩展工具栏,如何获取?
- ckeditor - CKEditor 自定义配置在草稿工作区中不起作用
- casting - 自定义类型转换为 VHDL 中的字符串
- python - 创建包含相似文本的文本集群
- c - 将一维数组转换为矩阵