我正在谈论一个可信赖的div内部的内容,而目标是同一个可信的div。所以没有涉及外部程序。
此div中HTML的结构是每个单词都在一个span中,我们需要跟踪一些数据。然后将空格留作跨距之间的文本节点。这在大多数情况下工作正常(拧你的换行符)但我在复制和粘贴时遇到了一个奇怪的问题。
Chrome转为此
<span attrs="stuff">word</span> <span attrs="stuff">another</span>
进入这个:
<span attrs="stuff">word </span><span attrs="stuff">another</span>
或者这个:
<span attrs="stuff">word</span><span style="line-height: 16.79999"> </span><span attrs="stuff">another</span>
这显然意味着,如果用户复制并粘贴多行,则格式化完全搞砸了,并且跨度的内容已更改,这使我们需要跟踪的数据无效。
核心问题是div中的其他内容可能包含非破坏空格,因此如果我在全局范围内开始交换它们,那么我可能会打破它。
对于我与我的attrs的跨度,然后我知道它们应该是什么,所以很容易剥离不间断的空间并将其恢复到应该如何。但是对于这些奇怪的线条高度的奇怪跨度,我不知道如何在不去除所有东西的情况下清理它们。
现在,我已经剥离了所有插入的跨距,其中只包含一个不间断的空间。但我真正喜欢的是要么阻止Chrome首先执行此操作,要么使用明确的方法来识别有问题的额外跨度,这样我就可以安全地清理它们,而不会破坏任何类似的跨度。原因。我可以使用这个奇怪的线高,但这感觉非常脆弱且不安全。
如何防止跨度出现或明确识别?
答案 0 :(得分:0)
问题不仅仅是Chrome问题。你可以在任何地方复制HTML代码。
这就是为什么你可以使用像CKEditor这样的编辑器。他们使用先进的过滤技术来删除这些糟糕的HTML代码。
我建议您使用剪贴板程序查看从不同位置复制HTML代码的方式:https://softwarerecs.stackexchange.com/questions/17710/see-clipboard-contents-hex-text
但是在我看来,自己实施这个是浪费时间。
可以很好地配置CKEditor以防止HTML代码错误。
最新版本的CKEditor具有非常复杂的内容过滤方法。它被称为“高级内容过滤器”。
基本上“高级内容过滤器”意味着:整个HTML代码被解析或检查。如果没有与给定HTML代码匹配的规则,则会过滤掉它。