Tinymce 中的标签重叠进入另一个标签内

问题描述

我们在项目中使用 Tinymce 5.6.2 并面临着非常奇怪的问题。我们有两个自定义按钮,当您单击它们时,它们会添加一些 HTML(例如 span 标签)。因此,要重现该问题,请先单击 Button1,这将在 HTML 下方插入到编辑器窗口中:

<p><span class="container1"><span class="icon1">1</span>[[Test One]]</span></p>

enter image description here

现在按键盘上的主页按钮或使用箭头键并转到编辑器窗口的大部分左侧,即刚好在新添加内容之前。请参阅下图中突出显示的光标位置:

enter image description here

现在单击 Button2,这将插入另一个 HTML。从技术上讲,它应该在 Button1 内容之前插入新的 HTML,因为我们已将光标移到编辑器窗口的开头和 Button1 内容之前,但是当您看到编辑器窗口的代码时,您会发现第二组 HTML 元素已插入到 Button1 的 HTML 中。见下图:

enter image description here

我创建了一个小提琴来重现这个问题:https://fiddle.tiny.cloud/f5haab/3

有人知道为什么会发生这种情况以及如何解决此问题吗?

解决方法

我知道这种行为是意料之中的,因为许多人将跨度用于不同类型的格式,例如颜色、大小写、字体大小等,并希望能够以相同的格式写入开头和结尾字。

但是,如果您不希望出现上述行为,您可以使用 noneditable plugin 来保护您的标签。有关工作示例,请参见下面的小提琴: https://fiddle.tiny.cloud/55haab/1

当我使用这个不可编辑的插件时,我遇到了另一个问题。基本上要使用不可编辑的插件,我们在 tinymce.init 的插件中添加“不可编辑”并在元素中使用“mceNonEditable”类。在我的情况下,当我尝试应用这个提到的类时,我收到了 JS 错误,

tinymce.min.js:9 未捕获的类型错误:无法读取未定义的属性“类”

所以,为了解决这个问题,我在 tinymce.init 中使用“extended_valid_elements”应用这个类:

extended_valid_elements: 'accessfilter[class=mceNonEditable]'
,

我们有两个方向可以尝试:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...