mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 02:23:19 -04:00
We added domdiff to replace the DiffDOM library here: https://github.com/alphagov/notifications-admin/commit/87f54d1e886f5c45ef7f12d88ef988c3f9343641 DiffDOM had updated its code to be written to the ECMAScript 6 (ES6) standard and so needed extra work to work with the older browsers in our support matrix. This was recorded as an issue here: https://www.pivotaltracker.com/n/projects/1443052/stories/165380360 Domdiff didn't work (see below for more details) so this replaces it with the morphdom library. Morphdom supports the same browsers as us and is relied on by a range of large open source projects: https://github.com/patrick-steele-idem/morphdom#what-projects-are-using-morphdom It was tricky to find alternatives to DiffDOM so if we have to source alternatives in future, other options could be: - https://github.com/choojs/nanomorph - https://diffhtml.org/index.html (using its outerHTML method) Why domdiff didn't work Turns out that domdiff was replacing the page HTML with the HTML from the AJAX response every time, not just when they differed. This isn't a bug. Domdiff is bare bones enough that it compares old DOM nodes to new DOM nodes with ===. With our code, this always results to false because our new nodes are made from HTML strings from AJAX response so are never the same node as the old one.