From 8feb539a44754acf780e4bda92a6f375b154bf15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mu-An=20=E2=9C=8C=EF=B8=8F=20Chiou?= Date: Wed, 31 Jan 2018 13:50:16 +0800 Subject: [PATCH 1/5] Fix custom elements added via insertAdjacentHTML never were upgraded --- include-fragment-element.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include-fragment-element.js b/include-fragment-element.js index 0f5082e..19581cf 100644 --- a/include-fragment-element.js +++ b/include-fragment-element.js @@ -17,6 +17,10 @@ function handleData(el, data) { if (parentNode) { el.insertAdjacentHTML('afterend', html) parentNode.removeChild(el) + + // Hack to get custom elements in html upgraded + // https://github.com/webcomponents/custom-elements/issues/104 + parentNode.innerHTML = parentNode.innerHTML } }, function() { From 11da43bd4f6156640a225d17b6eb1d60ae249e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mu-An=20=E2=9C=8C=EF=B8=8F=20Chiou?= Date: Wed, 31 Jan 2018 18:49:24 +0800 Subject: [PATCH 2/5] Move nodes around to avoid deregistering events --- include-fragment-element.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/include-fragment-element.js b/include-fragment-element.js index 19581cf..566f01c 100644 --- a/include-fragment-element.js +++ b/include-fragment-element.js @@ -15,12 +15,14 @@ function handleData(el, data) { function(html) { const parentNode = el.parentNode if (parentNode) { - el.insertAdjacentHTML('afterend', html) - parentNode.removeChild(el) - - // Hack to get custom elements in html upgraded - // https://github.com/webcomponents/custom-elements/issues/104 - parentNode.innerHTML = parentNode.innerHTML + const div = document.createElement('div') + el.insertAdjacentElement('beforebegin', div) + div.innerHTML = html + while (div.childNodes.length > 0) { + div.before(div.childNodes[0]) + } + div.remove() + el.remove() } }, function() { From 196c38f01c1cda33e68e856f23011b2c843dc31a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mu-An=20=E2=9C=8C=EF=B8=8F=20Chiou?= Date: Fri, 2 Feb 2018 08:53:32 +0800 Subject: [PATCH 3/5] Bump version to test this out --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0327fe5..9525f57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "include-fragment-element", - "version": "4.0.0", + "version": "4.0.1", "main": "dist/index-umd.js", "license": "MIT", "repository": { From f539ce90dc4a8048d259fe14b67e580e8a42c922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mu-An=20=E2=9C=8C=EF=B8=8F=20Chiou?= Date: Wed, 7 Feb 2018 09:03:21 +0800 Subject: [PATCH 4/5] Use documentfragment and disconnected tree --- include-fragment-element.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include-fragment-element.js b/include-fragment-element.js index 566f01c..f5d57c9 100644 --- a/include-fragment-element.js +++ b/include-fragment-element.js @@ -16,12 +16,12 @@ function handleData(el, data) { const parentNode = el.parentNode if (parentNode) { const div = document.createElement('div') - el.insertAdjacentElement('beforebegin', div) + const fragment = new DocumentFragment() div.innerHTML = html while (div.childNodes.length > 0) { - div.before(div.childNodes[0]) + fragment.appendChild(div.childNodes[0]) } - div.remove() + el.before(fragment) el.remove() } }, From 4831c4b50b3a7d88d38cf46cbf399b273ad29141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mu-An=20=E2=9C=8C=EF=B8=8F=20Chiou?= Date: Wed, 7 Feb 2018 09:08:53 +0800 Subject: [PATCH 5/5] Older methods --- include-fragment-element.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include-fragment-element.js b/include-fragment-element.js index f5d57c9..ddbce9f 100644 --- a/include-fragment-element.js +++ b/include-fragment-element.js @@ -21,8 +21,8 @@ function handleData(el, data) { while (div.childNodes.length > 0) { fragment.appendChild(div.childNodes[0]) } - el.before(fragment) - el.remove() + parentNode.insertBefore(fragment, el) + parentNode.removeChild(el) } }, function() {