考虑这个template
带有两个 flatx-element
和一个嵌套的 HTML。
<template id="fooTemplate">
<x-element>Enter your text node here.</x-element>
<x-element>
<x-element>Hello, World?</x-element>
</x-element>
</template>
如何初始化(触发构造函数)从fooTemplate
文档片段克隆的所有自定义元素,而不将其附加到 DOM,也不通过扩展内置元素is="x-element"
;要么是整个片段。
class XElement extends HTMLElement {
constructor() { super(); }
foo() { console.log( this ); }
} customElements.define( 'x-element', XElement );
const uselessf = function( temp ) {
const frag = window[ temp ].content.cloneNode( true );
/* Your magic code goes here:
*/ do_black_magic( frag );
for (const e of frag.querySelectorAll('x-element') )
e.foo(); // This should work.
return frag;
};
window['someNode'].appendChild( uselessf('fooTemplate') );
请注意,脚本使用defer
属性执行。