diff --git a/src/content/content.js b/src/content/content.js index 9c4da57..384ca10 100644 --- a/src/content/content.js +++ b/src/content/content.js @@ -14,7 +14,8 @@ function safeHTML(el, html) { const template = document.createElement('template'); template.innerHTML = html; - el.replaceChildren(...template.content.childNodes); + // Convert to static array — childNodes is live and shrinks as nodes move + el.replaceChildren(...Array.from(template.content.childNodes)); } // ============================================================ diff --git a/src/options/options.js b/src/options/options.js index 5f6eaa6..fbf0b11 100644 --- a/src/options/options.js +++ b/src/options/options.js @@ -17,7 +17,7 @@ const $ = (sel) => document.querySelector(sel); // --- Safe innerHTML replacement (AMO-compliant) --- function safeHTML(el, html) { const doc = new DOMParser().parseFromString(html, 'text/html'); - el.replaceChildren(...doc.body.childNodes); + el.replaceChildren(...Array.from(doc.body.childNodes)); } document.addEventListener('DOMContentLoaded', async () => { diff --git a/src/popup/popup.js b/src/popup/popup.js index 76de432..9b0ee0d 100644 --- a/src/popup/popup.js +++ b/src/popup/popup.js @@ -21,7 +21,7 @@ const $$ = (sel) => document.querySelectorAll(sel); // --- Safe innerHTML replacement (AMO-compliant) --- function safeHTML(el, html) { const doc = new DOMParser().parseFromString(html, 'text/html'); - el.replaceChildren(...doc.body.childNodes); + el.replaceChildren(...Array.from(doc.body.childNodes)); } // --- Init ---