From dcd8f2798859f8b2ac1077f0d0bd768120f9886a Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 5 Feb 2021 04:16:02 +0000 Subject: [PATCH] Handle preserved element that might not be existing --- src/htmx.js | 4 +++- test/attributes/hx-preserve.js | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/htmx.js b/src/htmx.js index 55a64ab9..01444234 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -479,7 +479,9 @@ return (function () { forEach(findAll(fragment, '[hx-preserve], [data-hx-preserve]'), function (preservedElt) { var id = getAttributeValue(preservedElt, "id"); var oldElt = getDocument().getElementById(id); - preservedElt.parentNode.replaceChild(oldElt, preservedElt); + if (oldElt != null) { + preservedElt.parentNode.replaceChild(oldElt, preservedElt); + } }); } diff --git a/test/attributes/hx-preserve.js b/test/attributes/hx-preserve.js index 3ad01cb7..08521bc0 100644 --- a/test/attributes/hx-preserve.js +++ b/test/attributes/hx-preserve.js @@ -17,5 +17,14 @@ describe("hx-preserve attribute", function () { byId("d2").innerHTML.should.equal("New Content"); }) + it('handles preserved element that might not be existing', function () { + this.server.respondWith("GET", "/test", "
New Content
New Content
"); + var div = make("
Old Content
"); + div.click(); + this.server.respond(); + byId("d1").innerHTML.should.equal("New Content"); + byId("d2").innerHTML.should.equal("New Content"); + }) + });