【问题标题】:What are the pitfalls of embedding using iframe使用 iframe 嵌入有哪些陷阱
【发布时间】:2019-07-10 05:50:46
【问题描述】:

我正在尝试使用 Elm 构建一个可重复使用的类似仪表板的 UI,以通过 yaml 文件进行声明式配置。

yaml 文件将指定一组可嵌入的 Web 应用程序(不仅基于 elm,而且理想情况下还包括 react/angular/vue),以包含在此 UI 的每个实例中,例如通过指定标签和存储库 url。

我尝试过使用传统的 Elm/React 方式来接管一个标准的非 iframe dom 元素,但存在各种问题。 (主要是elm替换了它接管的元素,也就是说不同的app不能共享同一个容器)

如果您愿意,可以在此处查看完整的概念证明 https://github.com/Dansvidania/mondrian-elm

还有更好的方法吗? (我相信有)但是,如果我决定使用 iframe,我可能会遇到什么问题?我只发现了反对 iframe 的轶事证据,而且(特别是对于沙盒)它们似乎很理想。

提前致谢

【问题讨论】:

    标签: javascript iframe embed sandbox elm


    【解决方案1】:

    来自Cam Jackson's Micro Frontends artice on martinfowler.com

    就像server-side includes option 一样,使用 iframe 构建页面并不是一项新技术,而且可能看起来并不那么令人兴奋。但是,如果我们重新审视微前端 listed earlier 的主要好处,iframe 基本上符合要求,只要我们小心如何分割应用程序和构建我们的团队。

    我们经常看到很多人不愿意选择 iframe。虽然有些不情愿似乎是由直觉驱动的,即 iframe 有点“恶心”,但人们有一些很好的理由避免它们。上面提到的简单隔离确实会使它们不如其他选项灵活。在应用程序的不同部分之间构建集成可能很困难,因此它们使路由、历史记录和深层链接更加复杂,并且它们对使您的页面完全响应提出了一些额外的挑战。

    【讨论】:

      【解决方案2】:

      我使用 iframe 没有问题。

      与嵌入在 iframe 中的 javascript 代码进行通信是可行的,但我总是觉得这样的代码被钉在一起并且缺乏优雅。

      我在父网页和 iframe 之间设置了消息,以克服域问题,并阐明父页面和 iframe 之间发生的通信。

      Cookie 和 iframe 不能很好地跨域播放 - 但这可以解决。

      【讨论】:

        猜你喜欢
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 2017-05-03
        • 2015-07-07
        • 2012-06-05
        • 2021-03-13
        • 2011-02-05
        • 2016-08-19
        相关资源
        最近更新 更多