Я ищу движок различий JavaScript, который будет возвращать разницу в структуре двух фрагментов HTML.То есть вместо «в этой строке, в том или ином символе что-то произошло», это будет «этот элемент был вставлен после этого элемента», или «этот элемент был удален», или «этот текстовый узел былизменено "и т. д.
Краткие исследования показывают, это сложно .
Конкретный сценарий заключается в том, что у меня есть предварительный просмотр текстового редактора Markdown.Он хорошо работает только с текстом, но как только пользователь публикует, скажем, встраивание YouTube <iframe>
, он рендерится / перезагружается при каждом нажатии клавиши, что нелепо дорого.Большие изображения также сложны, потому что они вызывают тошнотворный эффект дрожания при загрузке из кэша (по крайней мере, в WebKit).
Что было бы прекрасно, так это замена jQuery.html()
, которая вместо простой заменыСодержимое HTML фактически сравнивало старое с новым и выборочно обновлялось / вставлялось / добавлялось, так что неизмененные элементы оставались в покое.