【问题标题】:TinyMCE disabled after reload of AJAX content重新加载 AJAX 内容后禁用 TinyMCE
【发布时间】:2022-01-22 20:33:52
【问题描述】:

我们已将 TinyMCE 5 集成到我们的一个项目中,这让我难以接受。 我们其中一项的可编辑内容加载到 Bootstrap 4 模式对话框中。 加载模态对话框后,将为其中一个文本区域调用 tinyMCE:

tinyMCE.init( { selector: "textarea.tinymce",
                       theme: "silver",
                       width: "720",
                       menubar: false,
                       plugins: "spellchecker,image,paste,searchreplace,fullscreen,print,lists",
                       language: "de",
                       toolbar: "undo redo | styleselect | bold italic underline | alignleft aligncenter alignright alignjustify | numlist bullist | outdent indent | image | print"
                   } );

在模态窗口关闭之前 TinyMCE 被移除,代码如下:

$('textarea.tinymce').each( function()
 {
  let mceItemID = $(this).attr('id');

     tinyMCE.execCommand('mceRemoveControl',true, mceItemID);
     tinymce.remove('#' + mceItemID);
  });

我们尝试了使用和不使用 execCommand,结果总是当模态窗口第二次打开时 TinyMCE 项目显示但没有任何内容。它也不可点击或聚焦。 我们还需要做什么才能让 TinyMCE 正确重新初始化? 谢谢

【问题讨论】:

  • 为什么不只是为不同的项目更改 TinyMCE 的内容,而不是一次又一次地重新创建和销毁它?或者你对不同的项目有不同的模式,每个项目都有不同的 textarea 元素?
  • 谢谢悉达多,我想到了。问题是模态窗口的内容是通过 AJAX 从 django 应用程序中检索的。仅仅改变表单中的内容对象会很费力。我什至想过用其他东西替换 TinyMCE - 因为它似乎不起作用,但还没有找到好的替代方案。
  • 当通过 ajax 加载数据时,您仍然将其放入 textarea(和其他字段)对吗?我只是对为什么需要重新创建编辑器感到困惑,什么时候它不会产生影响。
  • 嗨 Sidddharth,用户可以在列表中编辑不同的记录详细信息。这将打开一个带有表单的模式窗口。该表单的 HTML 由服务器上的 python 应用程序生成。从服务器加载 HTML 后,我们调用一个 JavaScript 函数,该函数试图从其中一个文本区域中创建一个 TinyMCE 元素 - 这在第一次工作时有效,但对于后续调用则无效。
  • 啊,所以表格是动态的,明白了。重新初始化 textarea 后,控制台中是否出现任何错误?

标签: bootstrap-4 modal-dialog tinymce tinymce-5


【解决方案1】:

要正确重新启动编辑器:

  1. 使用getContent() 在某处保存当前内容
  2. 与其尝试逐个删除 TinyMCE 项目,不如使用 destroy() 彻底销毁整个实例
  3. 重新初始化
  4. 使用setContent()添加第1步保存的内容。

【讨论】:

  • 嗨,德米特里,谢谢。我刚刚尝试过,但似乎在正确使用破坏功能方面存在问题。我尝试了 tinyMCE.destroy(false) 并收到错误 tinyMCE.destroy is not a function。
  • 嗨,Dmitry,我阅读了 TinyMCE 的文档,但我不明白如何正确调用破坏函数。可以帮我吗?
猜你喜欢
  • 2014-06-23
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
相关资源
最近更新 更多