- From: Lea Verou <notifications@github.com>
- Date: Thu, 14 Sep 2023 08:35:40 -0700
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Thursday, 14 September 2023 15:35:47 UTC
@bahrus
> Say all you need to do is to create an isolated behavior/enhancement/hook/whatever associated with an attribute, say "log-to-console" anytime the user clicks on elements adorned with that attribute, where we can specify the message.
Sure, here you go:
```js
class LogAttribute extends Attribute {
connectedCallback() {
this.ownerElement.addEventListener("click", e => console.log(this.value));
}
};
HTMLElement.attributeRegistry.define("log-to-console", LogAttribute);
```
Roughly the same amount of code I believe.
> Here's how that would be done with the custom enhancements proposal:
Btw your code will log the old message even if the attribute changes (this is easily fixable by moving the `msg` declaration in the event listener).
When does `attachedCallback` fire? If it can fire multiple times for an element (e.g. if it's removed and re-added to the DOM multiple times), you will have multiple listeners, and thus log the message multiple times. Depending on how `connectedCallback()` works in `Attribute`, my example above may have the same issue, but I opted to keep it as close to your example as possible.
--
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/1029#issuecomment-1719688063
You are receiving this because you are subscribed to this thread.
Message ID: <WICG/webcomponents/issues/1029/1719688063@github.com>
Received on Thursday, 14 September 2023 15:35:47 UTC