javascriptcustom-element

Custom Element Illegal Constructor


This code gives an "Illegal Constructor" Error, can anybody tell me why?

class MyCustomElement extends HTMLElement {
  constructor(){
    super();
    // Other things
  }
}

const myFunc = () => {
  const instance = new MyCustomElement();
  console.log(instance);
}

myFunc();


Solution

  • After hours of searching I found that you MUST register the custom element BEFORE you can create an instance of it. I don't think this is in the spec, but this is the case for all browsers, also the error message sucks. I wish chrome would have just said "You must register a custom element before instantiating it" rather than "Illegal Constructor", which tells us almost nothing about what actually went wrong.

    class MyCustomElement extends HTMLElement {
      constructor(){
        super();
        // Other things
      }
    }
    
    const myFunc = () => {
      const instance = new MyCustomElement();
      console.log(instance);
    }
    
    // Add this and it will start working
    window.customElements.define('my-custom-element', MyCustomElement);
    
    myFunc();