JavaScript网页版本比较

时间:2010-12-16 19:43:26

标签: javascript jquery html

为了加快我们的“内容更新审核流程”(用于批准网页内容的发布),我希望实现一个比较两个网页版本的JavaScript功能。

到目前为止,我已经创建了一个页面,用于加载要从特定页面的新旧版本进行比较的内容。是否有(相对)简单的方法来使用JavaScript / jQuery迭代每个html的内容,并突出显示哪些内容已更改或丢失?

由于会有如此多的特定于html的细节(因为这本质上是html文本的comare),我可以使用一个JavaScript库吗?

我应该补充一点,我的第一个是在PHP中实现它。不幸的是,我们有许多限制,只允许我们使用有限的资源,如JavaScript。

2 个答案:

答案 0 :(得分:2)

版本控制是一个非平凡的问题。如果这是“内容更新审核流程”的一部分,那么您可能也不应该从头开始实施。

相反,请考虑使用SubversionGit或您最喜欢的源代码管理解决方案等工具。

如果真的想要这样做,你可以从像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个数组以突出显示差异。

这不是一个完美的解决方案,有时会出错。但如果你正确地选择了分隔符,则不常见。如果你想要它完美,你将不得不测试几个匹配并计算差异的数量,以便最小化它