Поскольку импорт HTML еще недостаточно хорошо поддерживается (например, Firefox не планирует этого делать), я попытался имитировать его использование при импорте пользовательских элементов через iframe.
Я пытался сделать это путем загрузки сценария в iframe, который определяет настраиваемый элемент в верхнем контексте просмотра; а после этого iframe можно было даже удалить из документа. Причина, по которой я пытался это сделать, заключается в том, что я хотел бы динамически определять настраиваемые элементы в соответствии с информацией, которую я получаю на стороне клиента; и эти настраиваемые элементы используют шаблоны, которые будут использоваться в теневой модели DOM.
Я предпочитаю использовать шаблоны вместо создания теневого DOM в сценарии, чтобы иметь чистый код; вот почему я хотел бы имитировать функциональность импорта с помощью iframe со всеми шаблонами, а не просто загружать скрипт, в котором создается теневой DOM.
Однако способ, который я пробовал, не работает (проверено в google chrome и firefox):
// iframe.js
class XAElement extends HTMLElement{
constructor(){
super()
// Any customization here
}
// Any other methods for functionality
}
top.customElements.define('x-a', XAElement)
Разрешено ли определять пользовательские элементы верхнего контекста просмотра в iframe?
Примечание. Файл iframe.html - это любой файл HTML, который загружает этот сценарий; а файл index.html (в котором возникает ошибка) - это любой файл, загружающий iframe iframe.html.
Примечание 2: я получаю ошибку afer super()
; однако, если я прокомментирую последнюю строку (в которой я собираюсь определить настраиваемый элемент), ошибки не произойдет.