Я использую функцию «пользовательских элементов» веб-компонентов и должен поддерживать старые браузеры (Firefox v60), поэтому вместо загрузки полифайлов через webcomponent-loader.js, который загружает все полифилы. ленивый загруженный пользовательский элемент polypill, основанный на обнаружении признаков
(function() {
if(!window.customElements){
var ce = document.createElement('script');
ce.type = 'text/javascript';
ce.async = true;
ce.src = 'https://unpkg.com/@webcomponents/custom-elements@1.2.4/custom-elements.min.js';
/**
* loading "customElement" polyfills wont't fire "WebComponentsReady" event, it will be called when we use
* "webcomponent-loader.js" but it will load other polyfills("shadow-dom"), so loading the "customElements" polyfill alone
* based on feature detection and firing "WebComponentsReady" event manually.
*/
ce.onload = function() {
document.dispatchEvent(
new CustomEvent('WebComponentsReady', {bubbles: true}));
};
var st = document.getElementsByTagName('script')[0];
st.parentNode.insertBefore(ce, st);
}
})()
и событие WebComponentsReady
запускается вручную при загрузке. Зарегистрированный элемент, как показано ниже
let registerElement = () => {
if(!window.customElements.get(“wc-button")){
window.customElements.define(‘wc-button', WCButton);
}
};
if(window.customElements){
registerElement();
} else {
document.addEventListener('WebComponentsReady', registerElement);
}
WebComponentsReadygot сработало, и в обратном вызове слушателя был вызван для определения / регистрации элемента, но элемент не отображается и не загружается на странице в firefox60.6.1esr (64-битная версия)