Étant donné que les importations HTML ne sont pas encore bien supportées (Firefox, par exemple, n'a aucun plan pour le faire), j'ai essayé de reproduire son utilisation en important des éléments personnalisés via des iframes.
La manière dont j'ai essayé de le faire est en chargeant un script dans l'iframe qui définit l'élément personnalisé dans le contexte de navigation principal ; et l'iframe pourrait même être supprimé du document après cela. La raison pour laquelle j'ai essayé de le faire est parce que j'aimerais définir dynamiquement des éléments personnalisés en fonction des informations que j'obtiens du côté client ; et ces éléments personnalisés utilisent des modèles pour être utilisés dans le shadow DOM.
Je préfère utiliser des modèles au lieu de construire le shadow DOM dans le script afin d'avoir un code propre ; c'est pourquoi j'aimerais reproduire la fonctionnalité d'importation avec un iframe contenant tous les modèles au lieu de simplement charger un script où le shadow DOM est construit.
Cependant, la manière dont j'ai essayé ne fonctionne pas (testé sur Google Chrome et Firefox) :
// iframe.js
class XAElement extends HTMLElement{
constructor(){
super()
// Toute personnalisation ici
}
// Toutes les autres méthodes pour la fonctionnalité
}
top.customElements.define('x-a', XAElement)
Est-il permis de définir des éléments personnalisés du contexte de navigation principal dans un iframe ?
Note : Le fichier iframe.html est n'importe quel fichier HTML qui charge ce script ; et le fichier index.html (dans lequel l'erreur se produit) est n'importe quel fichier qui charge l'iframe iframe.html.
Note 2 : L'erreur que j'obtiens se produit après super()
; cependant, si je commente la dernière ligne (dans laquelle j'ai l'intention de définir l'élément personnalisé), aucune erreur ne se produit.