- From: Joe Pea <notifications@github.com>
- Date: Thu, 25 Sep 2025 22:43:00 -0700
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <WICG/webcomponents/issues/946/3336854164@github.com>
trusktr left a comment (WICG/webcomponents#946) 3 years later and I stumbled on this again. It is very confusing. As @Jamesernator mentioned: > The confusing point isn't that elements don't get upgraded on `cloneNode`, the confusing point is that calling `customElements.upgrade` **explicitly** on such elements doesn't do anything because they aren't associated to the main document. Upgrades are, for sure, the most frustrating aspect of Custom Elements. This `upgrade()` fuels that fire. In case it helps anyone who stumbles here, I'll show an example that doesn't work, and how to make it work. Not working ([codepen](https://codepen.io/trusktr/pen/pvggjyo/07a5cda8275fd7692efaec6d0a5a92b5)): ```js class MyEl extends HTMLElement { constructor() {super(); console.log('MyEl constructor')} } customElements.define('my-el', MyEl) const template = document.createElement('template') template.innerHTML = '<my-el></my-el>' const frag = template.content.cloneNode(true) console.log(customElements.get('my-el')) // MyEl customElements.upgrade(frag) // crickets console.log('My el constructor should have ran already') document.body.append(frag) // logs "MyEl constructor" ``` Working ([codepen](https://codepen.io/trusktr/pen/myVVemG/bf6477874326074de429e5d73834386a)): ```js class MyEl extends HTMLElement { constructor() {super(); console.log('MyEl constructor')} } customElements.define('my-el', MyEl) const template = document.createElement('template') template.innerHTML = '<my-el></my-el>' const frag = document.importNode(template.content, true) console.log(customElements.get('my-el')) // MyEl customElements.upgrade(frag) // logs "MyEl constructor" console.log('My el constructor should have ran already') // document.body.append(frag) // not needed for upgrade ``` -- Reply to this email directly or view it on GitHub: https://github.com/WICG/webcomponents/issues/946#issuecomment-3336854164 You are receiving this because you are subscribed to this thread. Message ID: <WICG/webcomponents/issues/946/3336854164@github.com>
Received on Friday, 26 September 2025 05:43:04 UTC