【发布时间】:2019-02-17 07:18:59
【问题描述】:
由于 html 导入尚未得到很好的支持(例如,Firefox 没有计划这样做),我试图模仿它在通过 iframe 导入自定义元素时的使用。
我尝试这样做的方法是在 iframe 中加载一个脚本,该脚本在顶部浏览上下文中定义自定义元素;之后甚至可以从文档中删除 iframe。我尝试这样做的原因是因为我想根据我在客户端获得的信息动态定义自定义元素;并且那些自定义元素使用要在 shadow DOM 中使用的模板。
我更喜欢使用模板而不是在脚本中构建影子 DOM 以获得干净的代码;这就是为什么我想使用包含所有模板的 iframe 来模拟导入功能,而不是仅仅加载构建影子 DOM 的脚本。
但是,我尝试过的方式不起作用(在 google chrome 和 firefox 中测试):
// iframe.js
class XAElement extends HTMLElement{
constructor(){
super()
// Any customization here
}
// Any other methods for functionality
}
top.customElements.define('x-a', XAElement)
是否允许在 iframe 中定义顶部浏览上下文的自定义元素?
注意:文件 iframe.html 是加载此脚本的任何 html 文件;并且文件 index.html(发生错误的地方)是加载 iframe iframe.html 的任何文件。
注2:我得到的错误是super();但是,如果我注释最后一行(我打算在其中定义自定义元素),则不会发生错误。
【问题讨论】:
-
您尝试在 iframe 上下文中声明自定义元素类,但您在顶部容器中定义了自定义元素,这是一个不同的 javascript 上下文。为什么不在 iframe 上下文中定义自定义元素?
-
@Supersharp,如果我在 iframe 浏览上下文中定义自定义元素,则自定义元素在顶部浏览上下文中不起作用。
标签: javascript html iframe custom-element