首页 / 知识
关于 javascript:有人有渲染 HTML 的 diff 算法吗?
2023-04-13 11:01:00

Anyone have a diff algorithm for rendered HTML?我有兴趣看到一个很好的差异算法,可能在 Javascript 中,用于呈现两个 HTML 页面的并排差异。这个想法是差异会显示呈现的 HTML 的差异。 为了澄清,我希望能够看到并排的差异作为渲染输出。所以如果我删除一个段落,并排视图会知道正确地间隔。 @Josh 完全正确。虽然它可能会以红色或其他内容显示已删除的文本。这个想法是,如果我对我的 HTML 内容使用 WYSIWYG 编辑器,我不想切换到 HTML 来做差异。我想和两个所见即所得的编辑器并排一起做。或者至少在最终用户友好的情况下并排显示差异。 上周末,我在 codeplex 上发布了一个新项目,该项目在 C# 中实现了 HTML diff 算法。原始算法是用 Ruby 编写的。我知道您正在寻找一种 JavaScript 实现,也许有一个带有源代码的 C# 版本可以帮助您移植该算法。如果您有兴趣,这里是链接:htmldiff.codeplex.com。您可以在此处阅读有关它的更多信息。 更新:此库已移至 GitHub。 您可以使用另一个很好的技巧来显着改善呈现的 HTML diff 的外观。虽然这并不能完全解决最初的问题,但它会对呈现的 HTML diff 的外观产生重大影响。 并排呈现的 HTML 将使您的差异很难垂直排列。垂直对齐对于比较并排差异至关重要。为了改善并排差异的垂直对齐,您可以在差异应该垂直对齐的"检查点"的每个版本的差异中插入不可见的 HTML 元素。然后,您可以使用一些客户端 JavaScript 在检查点周围添加垂直间距,直到两侧垂直对齐。 解释得更详细一点: 如果你想使用这种技术,运行你的 diff 算法并根据 diff 插入一堆 考虑使用链接或 lynx 的输出来呈现 html 的纯文本版本,然后对其进行比较。 不久前我最终需要类似的东西。要让 HTML 并排排列,您可以使用两个 iFrame,但是您必须在滚动时通过 javascript 将它们的滚动绑定在一起(如果您允许滚动)。 但是,要查看差异,您很可能想要使用其他人的库。我在一个类似的项目中使用了一个 Java 库 DaisyDiff,我的客户很高兴看到带有 MS Word"跟踪更改"之类标记的内容的单个 HTML 呈现。 HTH DaisyDiff 怎么样(Java 和 PHP 版本可用)。 以下功能非常好:
对 HTML 使用 Pretty Diff 的标记模式。它完全用 JavaScript 编写。 http://prettydiff.com/ 所以,你期待
和
被认为是一样的吗? 输出很大程度上取决于用户代理。就像 Ionut Anghelcovici 建议的那样,制作一个图像。为您关心的每个浏览器做一个。 如果您使用 Java 和 XHTML,XMLUnit 允许您通过 org.custommonkey.xmlunit.DetailedDiff 类比较两个 XML 文档:
使用不同的文本会破坏非平凡的文档。 对于较小的差异,您可能可以进行普通的文本比较,然后分析丢失或插入的部分以查看如何解决它,但对于任何较大的差异,您将很难做到这一点. 例如,您将如何检测并显示左对齐的图像(文本段落的左侧浮动)突然变为右对齐? 如果是 XHTML(我对此做了很多假设),Xml Diff Patch Toolkit 会有所帮助吗? http://msdn.microsoft.com/en-us/library/aa302294.aspx 我认为这样做的一个好方法是将 HTML 呈现为图像,然后使用一些可以比较图像以发现差异的 diff 工具。 |
最新内容
相关内容
python为什么不显示none
python为什么不显示none,信息,培训,赋值,参数,变量,方法,数据类型,函数,对象,语句,下面是关于Python中None的一些解释:None是一个特殊的常量。python如何显示中文字体
python如何显示中文字体,地方,培训,文件,方法,之后,中文字体,中文,模块,声明,时候,python显示中文字体的方法:在这里,你可以选择2种不同的解决python如何显示当前路径
python如何显示当前路径,项目,名字,设计,培训,平台,路径,脚本,语言,绝对路径,新功能,python是一种跨平台的计算机程序设计语言。是一种面向对python算法有用吗
python算法有用吗,玩具,培训,算法,程序,存在,路径,也就是说,模型,场景,以上,有很多人说,学Python编程算法有用吗?学算法对于写程序来说非常重pythonmap函数怎么显示结果
pythonmap函数怎么显示结果,培训,代码,数字,函数,结果,序列,元素,参数,可能会,惰性,map()函数接收两个参数,一个是函数,一个是Iterable,map将传python怎么显示日期
python怎么显示日期,时间,单位,管理,培训,浮点,标准,项目,日期,格式,时钟,Python程序能用很多方式处理日期和时间,转换日期格式是一个常见的功python蒙特卡洛算法的介绍
python蒙特卡洛算法的介绍,培训,算法,概率,实例,过程,方法,随机性,个数,下面,以上,python中存在着很多算法,本篇要为大家介绍一种新的算法,蒙特python最短路径有哪些算法
python最短路径有哪些算法,策略,位置,培训,算法,路径,矩阵,节点,问题,源点,距离,python最短路径有哪些算法1、Bellman-Ford算法用于求解单源python轮盘赌算法如何使用
python轮盘赌算法如何使用,个体,规模,培训,状态,种群,算法,概率,列表,个人,精髓,python轮盘赌算法如何使用说明1、轮盘赌算法的精髓是可以根python决策树算法是什么
python决策树算法是什么,分析,下降,信息,基础,培训,情况,数据,算法,结点,样本,python决策树算法是什么1、说明决策树算法是在已知各种情况发python递归算法是什么
python递归算法是什么,规模,数据,培训,概念,算法,问题,分解,条件,方法,个子,python递归算法是什么1、概念递归算法是直接或间接调用自己的函关于表单:.Net Compact Framework滚
关于表单:.Net Compact Framework滚动条-垂直显示时始终显示水平,关于表单:.Net Compact Framework滚动条-垂直显示时始终显示水平,框