string

is

Permet d'instancier un élément HTML natif en tant qu'élément personnalisé étendu (Customized Built-in Element), défini via customElements.define.

Description

L’attribut is permet d’utiliser un Customized Built-in Element — un élément HTML natif étendu via customElements.define() avec l’option extends. Contrairement aux Autonomous Custom Elements (<mon-composant>), les éléments étendus héritent du comportement de l’élément natif qu’ils étendent.

Syntaxe

<button is="mon-bouton">Clic</button>
<input is="mon-input" type="text">

Exemples

Définition et utilisation d’un bouton étendu :

<script>
  class MonBouton extends HTMLButtonElement {
    constructor() {
      super();
      this.addEventListener('click', () => {
        console.log('Bouton personnalisé cliqué');
      });
    }

    connectedCallback() {
      this.setAttribute('data-personnalise', 'true');
    }
  }

  customElements.define('mon-bouton', MonBouton, { extends: 'button' });
</script>

<!-- Utilisation avec l'attribut is -->
<button is="mon-bouton" type="button">Mon bouton étendu</button>

Notes

Problème de support Safari : Safari ne supporte pas les Customized Built-in Elements (et ne les supportera pas sans polyfill). Ce manque de support universel limite fortement l’utilisation de is en production.

Autonomous vs Customized : les Autonomous Custom Elements (<mon-composant>) ont un support universel. Les Customized Built-in Elements (<button is="...">) ont un support partiel. Pour une meilleure compatibilité, préférer les Autonomous Custom Elements.

Avantage sémantique : un <button is="mon-bouton"> reste sémantiquement un bouton pour les technologies d’assistance, là où <mon-composant> nécessite des attributs ARIA supplémentaires.

Support navigateurs

Chrome67+ · Firefox63+ · SafariNon supporté · Edge79+