CustomElementRegistry

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

* Some parts of this feature may have varying levels of support.

A interface CustomElementRegistry provê métodos para registro de elementos customizados e busca de elementos registrados. Para instancia-lo, use a propriedade window.customElements.

Métodos

CustomElementRegistry.define()

Define um novo elemento customizado.

CustomElementRegistry.get()

Retorna o construtor do nome do elemento informado, ou undefined caso não tenha sido definido.

CustomElementRegistry.whenDefined()

Retorna um promise vazio que é resolvido quando o elemento customizado é inserido. Se o elemento já foi definido, o retorno ja é informado.

Exemplos

O código a seguir foi pego do nosso word-count-web-component exemplo (veja em ação). Perceba que usamos o método CustomElementRegistry.define() para definir um elemento customizado.

js
// Cria uma classe para o elemento
class WordCount extends HTMLParagraphElement {
  constructor() {
    // Sempre execute primeiro o método super
    super();

    // Conta as palavras no elemento pai
    var wcParent = this.parentNode;

    function countWords(node) {
      var text = node.innerText || node.textContent;
      return text.split(/\s+/g).length;
    }

    var count = "Words: " + countWords(wcParent);

    // Cria um shadow root
    var shadow = this.attachShadow({ mode: "open" });

    // Cria um nó de texto e adiciona o contador de palavra nele
    var text = document.createElement("span");
    text.textContent = count;

    // Acrescenta ao shadow root
    shadow.appendChild(text);

    // Atualiza o contador quando houver mudança
    setInterval(function () {
      var count = "Words: " + countWords(wcParent);
      text.textContent = count;
    }, 200);
  }
}

// Define um novo elemento
customElements.define("word-count", WordCount, { extends: "p" });

Nota: Note: The CustomElementsRegistry is available through the Window.customElements property.

Especificações

Specification
HTML
# custom-elements-api

Compatibilidade com navegadores

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
CustomElementRegistry
Customized built-in element support
define
Supports disabledFeatures static property
get
getName
upgrade
whenDefined

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
See implementation notes.