使用iframe进行嵌入的陷阱有哪些

时间:2019-07-09 19:55:26

标签: javascript iframe embed sandbox elm

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

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

我尝试使用传统的Elm / React方法来接管具有各种问题的标准非iframe dom元素。 (主要是,elm替换了它接管的元素,这意味着各种应用程序不能共享同一容器)

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

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

预先感谢

2 个答案:

答案 0 :(得分:4)

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

  

就像server-side includes option一样,从iframe中构建页面并不是一项新技术,而且似乎并不那么令人兴奋。但是,如果我们重新审视微前端listed earlier的主要优势,则只要我们对如何分割应用程序和组建团队保持谨慎,iframe基本上就可以满足要求。

     

我们经常看到很多人不愿意选择iframe。尽管某些不情愿似乎是由直觉造成的,即iframe有点“讨厌”,但人们还是避免了一些很好的理由。上面提到的容易隔离确实会使它们不如其他选项灵活。在应用程序的不同部分之间建立集成可能很困难,因此它们会使路由,历史记录和深层链接变得更加复杂,并且给使页面完全响应提供了一些额外的挑战。

答案 1 :(得分:2)

我使用iframe没问题。

与内嵌在iframe中的javascript代码进行通信是可行的,但是我始终觉得这样的代码是固定在一起的,并且缺乏优雅。

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

Cookie和iframe在跨域中的播放效果不佳-但这可以解决。