Re: [WICG/webcomponents] [Proposal] Stylesheet Observer (Issue #1041)

I'm not sure the use cases warrant a sophisticated observer object like `StyleSheetObserver`, so one way we could solve this is to dispatch an event on the `document` or `shadowroot` whenever `adoptedStyleSheets` or `stylesheets` is changed. So for example:

```js
document.addEventListener('stylesheetschanged', e => {
  console.log(document.styleSheets);
});
document.addEventListener('adoptedstylesheetschanged', e => {
    console.log(document.adoptedStyleSheets);
});
document.querySelector('my-element').shadowRoot.addEventListener('stylesheetschanged', e => {
  console.log(e.target.styleSheets);
});
document.querySelector('my-element').shadowRootaddEventListener('adoptedstylesheetschanged', e => {
    console.log(e.target.adoptedStyleSheets);
});
```

There are some tricky timing bits here though:

 - We'd probably need to _queue an event_ for this, which means it would be Task timings (think `setTimeout(..., 0)`. This would be a longer timing than a supposed `StylesheetObserver` which would probably borrow mutation timing.
 - `adoptedStyleSheets` wouldn't need to use a queued task but having different timing to `styleSheets` would be weird.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/1041#issuecomment-2627829440
You are receiving this because you are subscribed to this thread.

Message ID: <WICG/webcomponents/issues/1041/2627829440@github.com>

Received on Friday, 31 January 2025 17:09:11 UTC