首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们有iframe的时候,为什么要使用Shadow DOM?

当我们有iframe的时候,为什么要使用Shadow DOM?
EN

Stack Overflow用户
提问于 2013-05-22 02:43:41
回答 2查看 15.2K关注 0票数 37

我听说过shadow DOM,它似乎解决了web widget开发中的封装问题。DOM和CSS规则被封装起来,便于维护。但这不就是iframe的用途吗?iframes存在哪些问题,使得W3C有必要提出Shadow DOM或HTML5 Web组件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-22 02:47:59

iframes仅用作封装对象...

除了SVG (稍后将详细介绍)之外,今天的

平台只提供了一种将一块代码与另一块代码隔离的内置机制--这并不美观。是的,我说的是iframes。对于大多数封装需求,帧太重且限制太多。

Shadow DOM允许您通过创建DOM的另一个克隆或其中的一部分来提供更好、更容易的封装。

例如,假设您构建了一个跨网站使用的小部件(就像我一样)。你的小部件可能会受到页面上css的影响,看起来很糟糕,而使用Shadow DOM则不会:)

这里有一篇关于这个主题的优秀文章:

What The Heck is Shadow DOM/

票数 8
EN

Stack Overflow用户

发布于 2014-09-01 23:22:39

今天,iframe通常用于确保单独的作用域和样式。例如谷歌的地图和YouTube视频。

但是,iframe被设计为在当前HTML文档中嵌入另一个完整的文档。这意味着从父文档访问iframe中的给定DOM元素中的值是一件设计上很麻烦的事情。DOM元素位于一个完全独立的上下文中,因此您需要遍历iframe的DOM来访问您要查找的值。这与web组件形成对比,后者提供了一种优雅的方式来公开用于访问自定义元素的值的干净API。

想象一下使用一组5个iframes创建一个页面,每个iframes包含一个组件。每个组件都需要一个单独的URL来托管iframe的内容。由此产生的标记将会被iframe标签弄得乱七八糟,从而产生语义意义较低的标记,而且阅读和管理起来也很笨拙。相比之下,web组件支持为每个组件声明丰富的语义标记。这些标记在HTML中充当一等公民。这有助于读者(换句话说,维护开发人员)。

总而言之,虽然iframe和影子DOM都提供了封装,但只有影子DOM被设计用于web组件,从而避免了iframe中出现的过度分离、设置开销和笨重的标记。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16677271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档