javascript - TinyMCE 5:大写的自定义工具栏按钮
问题描述
我正在创建一个插件以将所有单词都大写。
const items = [
{
type: 'menuitem',
text: 'uppercase',
onAction: () => {
const uppercaseContent = editor.dom
.decode(editor.selection.getContent())
.toUpperCase();
editor.insertContent(uppercaseContent);
},
},
];
callback(items);
},
我对这段代码有一些问题:
- 当我应用大写时,它会从元素中删除当前样式。例如,如果我用粗体/斜体放置文本,它会删除样式并将单词大写。我需要将保持所有样式的单词大写。
- 当我选择多行来应用大写时,它也会将样式和类转换为大写。我需要保持所有元素完好无损,并且只将单词大写。
我在这段代码中遗漏了什么吗?
谢谢
解决方案
您是否丢失样式取决于您选择的内容。editor.insertContent
将完全替换选择,内联样式可能会产生不希望的副作用。
您可能想要深入挖掘选择中的所有子文本节点并将那些. 然而,这也不容易,因为您的选择可能涵盖文本节点的一部分(这些复杂性是insertContent
您要处理的事情)。
可靠地实现更改案例的开发过程非常复杂,我们决定为我们的解决方案收费: https ://apps.tiny.cloud/products/case-change/
推荐阅读
- c# - 从datagridview中选定行的值的ID中获取名称
- css - 带有组件的背景大小
- html - CSS 计数器意外重置“嵌套时”
- android - 如何观察两个 LiveData 并一起使用结果。如何实现 MediatorLiveData?
- flutter - 在 Flutter Web (Vs Code) 中运行任何东西时控制台中的错误
- javascript - 如何停止传播但仍然冒泡 DOM
- c# - C# 测试覆盖在 SonarQube 仪表板中为空
- spring-boot - 如何使用同步 SpringBoot 应用程序每小时处理 100 万个请求
- html - VBA从没有HTML的网页获取excel数据
- webpack - 路径连接在 webpack5 中不起作用,但在 webpack4 中起作用