Ich habe ein einfaches Beispiel mit Webkomponenten mit zwei benutzerdefinierten Elementen (v1) erstellt, wobei eines in einem anderen verschachtelt ist. index.html:Verschachteltes Element (Webkomponente) kann seine Vorlage nicht abrufen
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="import" href="app-container.html">
</head>
<body>
<app-container></app-container>
</body>
</html>
app-container.html:
<link rel="import" href="toolbar.html">
<template id="app-container">
<app-toolbar></app-toolbar>
</template>
<script>
customElements.define('app-container', class extends HTMLElement {
constructor() {
super();
let shadowRoot = this.attachShadow({ mode: 'open' });
const content = document.currentScript.ownerDocument.querySelector('#app-container').content;
shadowRoot.appendChild(content.cloneNode(true));
}
});
</script>
toolbar.html:
Aber im toolbar.html document.currentScript
ist das gleiche wie in der App -container.html und daher querySelector('#app-toolbar')
kann keine Vorlage mit der ID app-toolbar
finden. Wie man dieses Problem löst?
Beispiel getestet auf Chrome 55 (ohne Polyfill).
Supersharp, Vielen Dank! Frohes neues Jahr! –
Danke, du auch! – Supersharp