【发布时间】:2019-05-10 22:32:23
【问题描述】:
我正在尝试创建一个自定义元素,其中大部分 javascript 封装/引用在模板/html 本身中。如何从要在影子 dom 中执行的模板/元素中制作 javascript?下面是一个例子,可以更好地理解这个问题。如何让template.innerHTML (<script>alert("hello"); console.log("hello from tpl");</script>) 中的脚本执行?
目前我没有收到任何警报或登录控制台。我正在用 Chrome 进行测试。
class ViewMedia extends HTMLElement {
constructor() {
super();
const shadow = this.attachShadow({mode: 'closed'});
var template = document.createElement( 'template' );
template.innerHTML = '<script>alert("hello"); console.log("hello from tpl")';
shadow.appendChild( document.importNode( template.content, true ) );
}
}
customElements.define('x-view-media', ViewMedia);
<x-view-media />
【问题讨论】:
-
实际上你的例子有效。
标签: javascript dom shadow-dom custom-element