- From: Xiaocheng Hu <notifications@github.com>
- Date: Wed, 18 Jan 2023 18:10:55 -0800
- To: WICG/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Thursday, 19 January 2023 02:11:07 UTC
Unfortunately I found a case where my approach doesn't work...
It uses a constructor that re-enters itself with a direct call, and it's registered to different registries with different names:
```javascript
let nestedCalled = false;
let createdByNestedCall;
class ReentryByDirectCall extends HTMLElement {
constructor() {
super();
if (!nestedCalled) {
nestedCalled = true;
createdByNestedCall = new ReentryByDirectCall;
}
}
}
window.customElements.define('test-element', ReentryByDirectCall);
let registry = new CustomElementRegistry;
registry.define('shadow-test-element', ReentryByDirectCall);
let shadow = host.attachShadow({mode: 'open', registry});
```
Then if we call `shadow.createElement('shadow-test-element')`, we are supposed to also create `createdByNestedCall` using the global registry, and hence set its local name to `test-element`.
However, with the approach, we just check the tag on the constructor, and ended up using the scoped registry and creating another `shadow-test-element`
--
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/969#issuecomment-1396352059
You are receiving this because you are subscribed to this thread.
Message ID: <WICG/webcomponents/issues/969/1396352059@github.com>
Received on Thursday, 19 January 2023 02:11:07 UTC