TinyMCE 自动保存插件和 localStorage

TinyMCE autosave plugin and localStorage

默认情况下,TinyMCE 的自动保存插件将编辑器的文本存储在 localStorage 中。有没有办法告诉它使用不同的存储引擎?最后我想做的是在 storeDraft 事件上设置一个侦听器,这样我就可以将内容保存到我们的服务器,这样即使超过 autosave_retention 限制,用户也可以访问这些内容。我知道我可以将 autosave_rentention 设置为 0,但即使我这样做了,我仍然可以看到它仍然将数据写入 localStorage——它只是将其删除(尽管有时不会立即删除,而且看起来页面重新加载时间很短在某些情况下的电路)。

所以基本上,我想用一块石头打两只鸟。我想阻止 TinyMCE 将数据存储在 localStorage 中,如果我可以指定一个不同的 "data store",那么也许我可以将它指向我的 ajax 处理程序,它将持续到后端。

如有任何建议,我们将不胜感激!

thnx,
克里斯托夫

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 行代码。