Javascript Chrome在复制和粘贴的内容中插入不间断的空格

Javascript Chrome在复制和粘贴的内容中插入不间断的空格,javascript,html,google-chrome,Javascript,Html,Google Chrome,我说的是contenteditable div中的内容,目标是同一个contenteditable div,因此不涉及外部程序 这个div中HTML的结构是,每个单词都在一个范围内,其中包含一些我们需要跟踪的数据。然后,空白作为跨距之间的文本节点保留。这在大多数情况下都很好(去你的,新行),但我在复制和粘贴时遇到了一个奇怪的问题 铬可以改变这个 <span attrs="stuff">word</span> <span attrs="stuff">anothe

我说的是contenteditable div中的内容,目标是同一个contenteditable div,因此不涉及外部程序

这个div中HTML的结构是,每个单词都在一个范围内,其中包含一些我们需要跟踪的数据。然后,空白作为跨距之间的文本节点保留。这在大多数情况下都很好(去你的,新行),但我在复制和粘贴时遇到了一个奇怪的问题

铬可以改变这个

<span attrs="stuff">word</span> <span attrs="stuff">another</span>
另一个单词
为此:

<span attrs="stuff">word&nbsp;</span><span attrs="stuff">another</span>
另一个单词
或者这个:

<span attrs="stuff">word</span><span style="line-height: 16.79999">&nbsp;</span><span attrs="stuff">another</span>
另一个单词
这显然意味着,如果用户复制并粘贴了多行,那么格式就完全错误了,跨度的内容也发生了变化,这使得我们需要跟踪的数据无效

核心问题是,div中的其他内容可能因为真正的原因而包含非中断空格,因此如果我开始全局地交换它们,那么我可能会中断它

对于使用属性的跨距,我知道其中应该包含什么,这样就可以很容易地去掉不间断的空格,并将其恢复到应有的状态。但对于这些奇怪的跨度和奇怪的线高度,我不知道如何在不使用核武器的情况下清理它们

现在,我已经删除了所有插入的跨距,这些跨距只包含一个不间断的空格。但我真正想做的是首先阻止Chrome这样做,或者用一种明确的方法来识别有问题的额外跨度,这样我就可以安全地清理它们,而不会破坏任何出于真正原因而存在的类似跨度。我想我可以用这种奇怪的线条高度,但这感觉非常脆弱和不安全


如何防止跨距出现或明确标识跨距

问题不仅仅是Chrome的问题。任何时候你复制HTML代码的地方都可能发生类似的事情

这就是为什么可以使用像CKEditor这样的编辑器。他们有先进的过滤技术来删除这些糟糕的HTML代码

我建议使用剪贴板程序查看从不同位置复制时HTML代码的状态:

但在我看来,自己实现这一点是浪费时间

CKEditor可以很好地配置以防止错误的HTML代码

最新版本的CKEditor具有非常复杂的内容过滤方法。它被称为“高级内容过滤器”


基本上,“高级内容过滤器”的意思是:对整个HTML代码进行解析或检查。如果没有与给定HTML代码匹配的规则,则会将其过滤掉。

您有没有可以发布的示例?我不太明白你想干什么。您正在解析contenteditable div并用标记包装单词吗?解决了您的问题吗problem@Yoink:否,我通过JS将内容插入div。然后用户复制并粘贴它。这是一个富文本框,因此它可能包含很多奇怪的东西,用户也可以尝试复制和粘贴这些东西,因此我无法对传入的内容进行假设,除非它被特别标记为我的。