2010-12-16 106 views
1

为了加快我们的'内容更新审查过程',该过程用于批准发布网页内容,我期待实现一个JavaScript函数来比较两个网页版本。JavaScript网页版本比较

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

由于会有这么多的html特定的细节(因为这本质上是HTML文本comare),是否有我可以使用的JavaScript库?

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

+3

它是否必须是Javascript?服务器端语言是不可能的? – 2010-12-16 19:44:59

+0

我们可以在ASP.NET中做到这一点,但我会诚实的。我在一家公共机构工作,任何涉及实际编码的事情都需要IT部门的监督。不幸的是,我们需要在不到一年的时间内完成这项工作...... – 2010-12-16 19:50:57

+0

如果您正在寻求“不要实际编码”,请将引用移至CMS。 – 2010-12-16 19:54:35

回答

2

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

取而代之,请考虑使用工具SubversionGit或您最喜爱的源代码控制解决方案。

如果你真的想要做到这一点,你可以从像正则表达式匹配到DOM匹配这样简单的事情。没有“魔法图书馆”,我知道这将为你封装,所以这将是工作。工作,你可能会做错。

认真考虑一个版本控制提供者,或者使用内置版本控制页面的CMS。如果你感到压力很大,请查看一个开源CMS(如Drupal),并试图找出它们如何实现版本控制,然后自行对其进行逆向工程/重新设计。我希望这种低效率是显而易见的。

1

我会做这3个步骤

1 /段含量为2个阵列

每个 页。选择一个分隔符,如“。”或“” 。你具有的内容以大的字符串,将它和建立一个数组

2 /比较阵列在包含分段的内容这2个阵列

环,假设A [idxA]和B [idxB] 。如果A [idxA] == B [idxB],则idxA ++和idxB ++ 。否则查找是否有索引,其中A [idxA] == B [index] 。如果存在,则将idxB和索引之间的所有索引标记为“B修改” 。否则,标记idxA为“A修饰的”

3 /显示差异

在最后你应该有所有A和B不相等的索引。然后,您可以在添加一些标记以突出显示差异之后加入2个阵列。

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