Следует отметить, что вам не нужно использовать window
для всех вызовов customElements
.
Я изменил ваш код ниже, и он прекрасно работает, как вы сказали.
customElements.whenDefined('file-bag')
.then(() => console.log('Registered'))
.then(() => console.log(customElements.get('file-bag')))
.catch(console.error);
customElements.define('file-bag', class extends HTMLElement {
constructor() {
super();
var shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = `<strong>Shadow dom super powers for the win!</strong>`;
}
});
<file-bag></file-bag>
Я также создал два файла, FileBag.js
:
customElements.whenDefined('file-bag')
.then(() => console.log('Registered'))
.then(() => console.log(customElements.get('file-bag')))
.catch(console.error);
customElements.define('file-bag', class extends HTMLElement {
constructor() {
super();
var shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = `<strong>Shadow dom super powers for the win!</strong>`;
}
});
и FileBagExample.html
:
<!doctype html>
<html>
<head>
<title>Simple Tag</title>
<script src="FileBag.js"></script>
</head>
<body>
<file-bag></file-bag>
</body>
</html>
И это прекрасно работает для меня в Chrome 70 и Firefox 63.
Да, Firefox 63 теперь поддерживает веб-компоненты.Мы только ждем на краю.на 100% поддержку.