【问题标题】:How we can copy custom elements from parent window inside iframe window?我们如何从 iframe 窗口中的父窗口复制自定义元素?
【发布时间】:2021-06-09 08:05:55
【问题描述】:

我有一个应用程序,我在其中加载了一些自定义元素(通过 js 文件)并添加了 iframe 并在 iframe 中加载了一个页面。

是否可以在不添加自定义元素js文件引用的情况下复制框架窗口内的所有自定义元素?

【问题讨论】:

    标签: javascript custom-element


    【解决方案1】:
    • customElementsRegistry 是一个窗口全局对象

    • IFrame 是另一个窗口

    所以他们共享注册表/自定义元素

    关于Scoped Registries的讨论正在进行中
    https://github.com/WICG/webcomponents/issues/716

    但这更多的是关于一个窗口/文档

    中的多个注册表

    您的 IFrame 场景不太可能得到解决;

    所以只需将您的 elements.js 添加到 IFrame 中加载的 HTML 文件中

    【讨论】:

    • 我想摆脱 element.js 文件,因为它已经在父窗口中可用。让 logo = window.parent.customElements.get('my-logo') 将此分配给 iframe 窗口:window.customElements.define('my-logo', logo);这是正确的方法吗?
    • 您过于复杂并创建了将来必须维护的依赖项...浏览器已经下载了element.js,因此在 IFrame 中重用它几乎不会产生影响。想想你的组件,比如图像......你不会跳过篮球从不同的地方读到你的[公司标志]。这就是您现在想要做的......而不是从其原始源定义组件,您现在希望父窗口成为源。 KISS - 保持简单 S....
    • 目前我正在向每个页面注入 js 文件,但我担心的是因为它已经在父窗口中可用,然后子窗口可以在运行时创建必要的元素,这样所有页面都不需要加载整个 elements.js尺寸更大,我可以节省一些连接时间。
    • 不,您只是从不同的来源请求您的“BaseClass”..实际上比再次请求文件慢我不会感到惊讶..因为该文件已被缓存,已经处理由 Browser 引擎...就像它处理相同的图像(或任何文件)URI .. 通过调用 JavaScript 引擎复制该行为总是会更慢。再次.. 将您的 element.js 视为您的 [公司徽标] 图像文件.. 您也使用相同的 URI(我希望).. 您没有调用父窗口(使用徽标的位置)并提取 IMG 二进制数据进入您的 IFrame。
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多