Chrome会将不间断的空格插入到复制和粘贴的内容中

时间:2015-03-17 09:23:27

标签: javascript html google-chrome

我正在谈论一个可信赖的div内部的内容,而目标是同一个可信的div。所以没有涉及外部程序。

此div中HTML的结构是每个单词都在一个span中,我们需要跟踪一些数据。然后将空格留作跨距之间的文本节点。这在大多数情况下工作正常(拧你的换行符)但我在复制和粘贴时遇到了一个奇怪的问题。

Chrome转为此

<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中的其他内容可能包含非破坏空格,因此如果我在全局范围内开始交换它们,那么我可能会打破它。

对于我与我的attrs的跨度,然后我知道它们应该是什么,所以很容易剥离不间断的空间并将其恢复到应该如何。但是对于这些奇怪的线条高度的奇怪跨度,我不知道如何在不去除所有东西的情况下清理它们。

现在,我已经剥离了所有插入的跨距,其中只包含一个不间断的空间。但我真正喜欢的是要么阻止Chrome首先执行此操作,要么使用明确的方法来识别有问题的额外跨度,这样我就可以安全地清理它们,而不会破坏任何类似的跨度。原因。我可以使用这个奇怪的线高,但这感觉非常脆弱且不安全。

如何防止跨度出现或明确识别?

1 个答案:

答案 0 :(得分:0)

问题不仅仅是Chrome问题。你可以在任何地方复制HTML代码。

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

我建议您使用剪贴板程序查看从不同位置复制HTML代码的方式:https://softwarerecs.stackexchange.com/questions/17710/see-clipboard-contents-hex-text

但是在我看来,自己实施这个是浪费时间。

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

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

基本上“高级内容过滤器”意味着:整个HTML代码被解析或检查。如果没有与给定HTML代码匹配的规则,则会过滤掉它。