Я пытаюсь использовать теневую DOM без какой-либо структуры, которая ее абстрагирует, в основном для того, чтобы изучить ее тонкости. Я использую полифиллы webcomponents.js, поэтому он работает в разных браузерах.
Мне удалось создать собственный элемент и установить его теневую DOM, но по какой-то причине тег <content></content>
не включает ожидаемый контент.
Я ожидаю, что этот пример будет отображаться как
Shadow DOM
Hello world
More Shadow
Но это выглядит как
Shadow DOM
More Shadow
Что мне здесь не хватает?
<script src="webcomponents-lite.min.js"></script>
<test-component>
<div>Hello world</div>
</test-component>
<template id="test-component">
<div>Shadow DOM</div>
<content></content>
<div>More shadow</div>
</template>
<script>
class TestComponent extends HTMLElement {
constructor() {
super();
var shadow = super.attachShadow({ mode: 'open' });
var template = document.getElementById('test-component');
var clone = document.importNode(template.content, true);
shadow.appendChild(clone);
}
}
customElements.define('test-component', TestComponent);
</script>
(Пример завершен, и его можно запустить как весь HTML-файл, при условии, что у вас есть webcomponents-lite.min.js, или его можно запустить без файла .js в поддерживаемых браузерах)
content
был заменен элементомslot
. - person Alohci   schedule 03.09.2017slot
и атрибутаslot
см. В шаблоне developer.mozilla.org/en-US/docs/Web/HTML/Element/ - person sideshowbarker   schedule 04.09.2017