- From: Joe Pea <notifications@github.com>
- Date: Sat, 03 Oct 2020 15:59:30 -0700
- To: whatwg/dom <dom@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/dom/issues/899@github.com>
It's a bit weird because you expect to use `connectedCallback` to initialize things, then `attributeChangedCallback` in between `connectedCallback` and `disconnectedCallback` in the parse case (constructing and changing attributes before connecting an element imperatively is valid but is a different use case). The follow code throws an error: ```html { // pretend this is an element you import from some library. class CoolElement extends HTMLElement { connectedCallback() { console.log('connectedCallback') this.root = this.attachShadow({mode: 'closed'}) this.root.innerHTML = ` <div style="border: 10px solid cornflowerblue"> <slot></slot> </div> ` } static observedAttributes = ['color'] attributeChangedCallback(attributeName, oldValue, newValue) { console.log('attributeChangedCallback') if (attributeName === 'color') { this.root.children[0].style = 'border: 10px solid ' + (newValue || 'cornflowerblue') } } } customElements.define('cool-element', CoolElement) // pretend this is the end user code that consumes the cool element. document.body.innerHTML = ` <cool-element> <p>This is a paragraph of text.</p> </cool-element> <cool-element color="deeppink"> <p>This is a paragraph of text.</p> </cool-element> <cool-element color="rebeccapurple"> <p>This is a paragraph of text.</p> </cool-element> ` } ``` -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/dom/issues/899
Received on Saturday, 3 October 2020 22:59:46 UTC