tinymce <span> 在包含 <br /> 时被删除

tinymce <span> gets removed when containing <br />

我正在使用 Tiny 4.9.10 基于模板动态生成报告。用户可以创建包含占位符的模板。然后在生成实际报告时,这些占位符会被换成它们的实际值。占位符从其封闭的 <span>-tag.

中获取其样式(包括字体,这是这里的主要问题)

当用实际值替换占位符时,我们使用 <br /> 标签插入新行,因为一些占位符本身几乎是完整的报告,需要进行结构化。

占位符全部替换后,我们将动态生成的内容重新注入到 Tiny 编辑器中,以允许用户对内容进行临时更改。

然而,此时我们注意到包含 <br /> 标签的一段生成内容周围的 <span> 标签被删除了。这是一个问题,因为包含在该标签中的样式信息也被删除,导致在生成 PDF 时进一步出现问题。

我尝试解决此问题的方法:

前两个选项对我没有任何帮助,虽然最后一个看起来很有希望,但它没有帮助,因为即使在使用 <div> 时,字体信息也会包含在子 [=12= 中].

我知道这是预期的行为,因为 <span> 是一个内联标签,所以它不应该有 <br /> 标签作为子标签,但我目前不知道如何解决允许我在动态生成的内容中包含 <br /> 标签,而不会丢失父标签的样式(最重要的是字体)。

因此,当我们使用一些正则表达式查找包含 <p>...<\p><b />。这会阻止 Tiny 在包含这些封闭标签

中的任何一个时丢弃 <span> 标签

TinyMCE 认为 <span> <br /> </span> 构造一个空的 space 并将其删除以利于优化。

我可能会迟到,但您也可以尝试在 setup 选项中使用此回调来阻止编辑器删除空跨度:

setup: function(editor) {
  editor.on('PreInit', function() {
    editor.schema.getElementRule('span').removeEmpty = false;
  });
}