javascript - Tinymce 中的标签重叠(进入另一个标签内)
问题描述
我们在项目中使用 Tinymce 5.6.2 并面临非常奇怪的问题。我们有两个自定义按钮,当您单击它们时,它们会添加一些 HTML(例如 span 标签)。因此,要重现该问题,首先单击 Button1,这将在 HTML 下方插入编辑器窗口:
<p><span class="container1"><span class="icon1">1</span>[[Test One]]</span></p>
现在按键盘上的主页按钮或使用箭头键并转到编辑器窗口的大部分左侧,即在新添加内容之前。请参阅下图中突出显示的光标位置:
现在单击 Button2,它将插入另一个 HTML。从技术上讲,它应该在 Button1 内容之前插入新的 HTML,因为我们已将光标移动到编辑器窗口的开头和 Button1 内容之前,但是当您看到编辑器窗口的代码时,您会发现第二组 HTML 元素已插入到 Button1 的 HTML 中。见下图:
我创建了一个小提琴来重现这个问题:https ://fiddle.tiny.cloud/f5haab/3
任何人都知道为什么会发生这种情况以及如何解决这个问题?
解决方案
我知道这种行为是意料之中的,因为许多人使用跨度来表示不同类型的格式,例如颜色、大小写、字体大小等,并且希望能够以相同的格式书写单词的开头和结尾。
但是,如果您不希望出现上述行为,您可以使用不可编辑插件来保护您的标签。请参阅下面的小提琴以获取工作示例: https ://fiddle.tiny.cloud/55haab/1
当我使用这个不可编辑的插件时,我遇到了另一个问题。基本上要使用不可编辑的插件,我们在 tinymce.init 的插件中添加“noneditable”,并在元素中使用“mceNonEditable”类。在我的情况下,当我尝试应用这个提到的类时,我得到了 JS 错误,
tinymce.min.js:9 未捕获的类型错误:无法读取未定义的属性“类”
所以,为了解决这个问题,我在 tinymce.init 中使用“extended_valid_elements”应用这个类:
extended_valid_elements: 'accessfilter[class=mceNonEditable]'
推荐阅读
- python - 追加到字典与数据帧之间的时间复杂度
- python-3.x - 如何将任何数字转换为 numpy nan
- sql - 使用 Where Not Exists 更新语句
- javascript - 检查 html 输入元素值的 if 语句
- laravel - 如何使用我的服务器 SMTP 详细信息在 Laravel 中发送电子邮件?
- swift - 快照视图不包含 iOS 10 上的图像
- c# - 在 ItemInserting 上未发生 ListView 验证
- java - 想在java中打印特定单元格的所有行值
- java - 如何阻止 Recyclerview 产生重复项并停止洗牌?
- r - 为什么我的错误栏的末端不显示?