为了加快我们的“内容更新审核流程”(用于批准网页内容的发布),我希望实现一个比较两个网页版本的JavaScript功能。
到目前为止,我已经创建了一个页面,用于加载要从特定页面的新旧版本进行比较的内容。是否有(相对)简单的方法来使用JavaScript / jQuery迭代每个html的内容,并突出显示哪些内容已更改或丢失?
由于会有如此多的特定于html的细节(因为这本质上是html文本的comare),我可以使用一个JavaScript库吗?
我应该补充一点,我的第一个是在PHP中实现它。不幸的是,我们有许多限制,只允许我们使用有限的资源,如JavaScript。
答案 0 :(得分:2)
版本控制是一个非平凡的问题。如果这是“内容更新审核流程”的一部分,那么您可能也不应该从头开始实施。
相反,请考虑使用Subversion,Git或您最喜欢的源代码管理解决方案等工具。
如果真的想要这样做,你可以从像Regex匹配这样简单的东西转到DOM匹配。我所知道的没有“神奇的图书馆”会为你封装这个,所以它会起作用。你可能做错的工作。
认真考虑版本控制提供程序,或使用内置版本页面的CMS。如果您感觉不舒服,请查看开源CMS(如Drupal)并尝试弄清楚它们如何实现版本控制,然后自行进行逆向工程/重新设计。我希望这种效率低下是显而易见的。
答案 1 :(得分:1)
我会分三个步骤
1 /将内容分成2个数组
每页 。选择一个分隔符,如“。”要么 ”” 。你将内容作为一个大字符串,拆分它并构建一个数组
2 /比较数组
在包含分段内容的这两个数组上循环,假设A [idxA]和B [idxB] 。如果A [idxA] == B [idxB]则为idxA ++和idxB ++ 。否则查找是否存在A [idxA] == B [index]的索引 。如果有,将idxB和索引之间的所有索引标记为“B modified” 。否则,将idxA标记为“已修改”
3 /显示差异
最后,您应该拥有A和B不相等的所有索引。然后,您可以在添加一些标记后加入2个数组以突出显示差异。
这不是一个完美的解决方案,有时会出错。但如果你正确地选择了分隔符,则不常见。如果你想要它完美,你将不得不测试几个匹配并计算差异的数量,以便最小化它