重学 HTML —— 内嵌内容

232 阅读3分钟

「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战

内嵌内容指的是在除了多媒体外嵌入的外部内容,我们来看一下这部分元素。

  • embed:嵌入外部资源,给浏览器插件使用,这个标签现在几乎用不到了。
  • object、param:用于嵌入外部资源,通过 data 属性添加资源内容,使用 param 标签设置一些参数。
  • picture:可以通过 source 指定一组图片信息,根据不同的条件来加载特定的图片资源。
  • source:可以为 picture、video、audio 指定资源信息,上面支持大小,媒体查询等相关的条件信息,可以选择特定的资源。
  • portal:嵌入另一个 html 资源,不过不能交互。

除了上面几个不常用的,还有一个最重要的内嵌元素 —— iframe,iframe 用来嵌入外部的网页,不同于 portal,iframe 嵌入的是一个完整的页面,我们可以正常访问,与在新页面打开网页效果是相同的,每个 iframe 是一个独立的上下文环境,这样可以形成一个很好用的沙箱效果,iframe 有着很广泛的应用,接下来详细看一下 iframe。

iframe 通过 src 属性来加载一个链接,这个链接可以像普通网页一样渲染出来,不过可能会有一些限制,这里有几个属性需要关注:

  • allow:指定特征策略,通过这个属性可以选择启用关闭修改一些浏览器行为,我们可以使用这个属性来对 iframe 页面的一些特性进行修改。
  • sandbox:对 iframe 页面启用一系列的条件,其中的一些开关也很有用,可以查看文档。

在 iframe 中的页面可以通过 window.parent 访问到父页面,可以使用 postMessage API 与外面的页面进行消息通信,由于 postMessage API 是支持跨域访问的,这里使用起来很方便。

iframe 当然也有缺点,最为人诟病的问题就是每个 iframe 太重,占用资源过多,而且多个 iframe 直接不容易复用资源,严重影响页面性能,因此 iframe 能不用就不用,但是在某些情况下确实很方便。

iframe 曾经 一个重要的作用是解决老项目使用新技术栈的问题,使用 iframe 来进行隔离,当然由于上面的一系列问题这样做的越来越少了,逐步衍生出一系列微前端的解决方案。微前端其核心就是自己实现一套沙箱机制,确实可以解决某些大型混乱项目下的一系列问题,但是个人还是不建议滥用。

html 中与内嵌内容相关联的标签就这么多,这一部分除了 iframe 其他的主要还是以了解为主。

iframe

source

www.jianshu.com/p/d78ce85db…