javascript - 如何从链接的 javascript 文件中访问自定义元素?

标签 javascript web-component custom-element html5-template

如果我有这样的脚本

<template id="x-foo-from-template">
    <script src="/js/main.js"></script>
</template>

<script>
    customElements.define('my-header', class extends HTMLElement {
        constructor() {
            super();
            let shadowRoot = this.attachShadow({mode: 'open'});
            const t = document.currentScript.ownerDocument.querySelector('#x-foo-from-template');
            const instance = t.content.cloneNode(true);
            shadowRoot.appendChild(instance);

            // set up title
            var title = this.getAttribute("title");
            var div = document.createElement("div");
            div.innerText = title;
            shadowRoot.appendChild(div);
        }
    });
</script>

main.js 中,我如何访问等同于 constructor() 中的 this 的自定义元素?

谢谢

最佳答案

您不能按照 this thread 中的说明那样做: currentScript属性(property)将返回null .

相反,您应该在 <template> 之外加载脚本,并从您的自定义元素回调中调用脚本中定义的函数 connectedCallback()constructor() .

关于javascript - 如何从链接的 javascript 文件中访问自定义元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45772685/

相关文章:

javascript - 扩展 html 组件获取属性不起作用

html - 如何在自定义元素*及其子元素*已初始化时获得回调

javascript - 使用 javascript 使用已安装的搜索引擎执行搜索

javascript - 根据部分列数据更改表格行的背景颜色

css - 带有 Web 组件的页面的自定义滚动条

polymer - Chrome 网络组件 : Polymer needed?

javascript - 重置值或设置为默认选择的选项 jQuery

javascript - 更新 D3.js 多线图表时遇到问题

javascript - 无法使 div/元素在嵌套的 shadowdom 中移动

javascript - JS自定义元素中的设置间隔