Tôi đã tạo một ví dụ đơn giản bằng cách sử dụng Thành phần web với hai phần tử tùy chỉnh (v1), trong đó một phần tử được lồng vào nhau. index.html:Phần tử lồng nhau (thành phần web) không thể lấy mẫu của nó
<!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:
Nhưng trong toolbar.html document.currentScript
cũng giống như trong ứng dụng -container.html và do đó querySelector('#app-toolbar')
không thể tìm thấy mẫu có id app-toolbar
. Làm thế nào để giải quyết vấn đề này?
Ví dụ được thử nghiệm trên Chrome 55 (không có chèn lấp).
Supersharp, Rất cám ơn! Chúc mừng năm mới! –
Cảm ơn, bạn cũng vậy! – Supersharp