• [Web] 被遗忘的知识点 iFrames(HTML)过时了没有?


    前言


    关于iFrame是否过时的争论从未停息,我曾狂恋过她、也曾憎恶过她,但是最近项目中关于她的一番折腾,那我开始心平气和地去看待她,她不好也不坏就在那里,用与不用全在于你。
    这篇文章我不想发表什么观点,只是想汇总展示一下别人对她的一些观点,希望对大家有所启发。

    问题提出:


    听说iFrame已经过时了,真希望这不是真的,难以想象不再使用她的后果如何。我想提出下面两个问题,希望大家能探讨一下:
    1、为什么iFrame标签会过时?
    2、如果iFrame标签过时了,使用什么方法去替代她?

    问题回答:


    A:我认为W3C在DOCTYPE为Strict HTML和XHTML文档里面实际已经将iframe排除在外。理论上来说,你可以使用<object>元素来添加一些外来的对象到你的文档里面,但是跨浏览器开发的限制使得对许多开发人员来说,这种开发变得不可取。但是一个好消息是在HTML 5中,iFrame又回来了,并且多了两个新的属性 seamless 和 sandbox。
    B:HTML 5里面依旧支持iframe,所以我认为在可以预见的未来,iFrame不会过时。回答一下你的其它两个问题:
      1、iframe大部分时候并不是友好的:很难通过URL获取iframe的内容、大多数"技术恐惧"的用户讨厌frames、相对而言浏览器渲染iframe效率更低
      2、至于替代,你不但可以使用动态页面(SSI, PHP, Rails等)生成,或者可以使用JavaScript、AJAX去改变内容。
      声明一点:我们这儿讨论的iFrame是一个接口元素(interface element),并不是一个隐藏元素(hidden element)用于加载其它东西。
    C: iFrame对于页面的布局来说是过时的了。永远不要用iFrame进行布局,你可以使用很好的CSS布局,甚至table-based布局也比iFrame布局好。至于何时使用iFrame,我总结了两点如下:
      1、ads:通常加载一些页面广告就是使用这种技术的,iFrame可以封装好广告页面,使广告页面的CSS不会影响你的整体页面
      2、hidden iframe:使用其可用来做很多有用的事情,比如追踪(Tracking)、替代AJAX等。
    D:我之前的公司,我们提供一个主机应用程序(HOST Application),客户然后将我们的主机应用程序整合到她们自己的网站。通常,他们都会使用一个iFrame来做这件事情,将我们的主机应用程序页面调整后集成到他们的页面中。有时这样做起来甚至可以达到无缝集成的效果,我认为有时iFrame标签很有用的。

    小结:


    前段时间项目中iFrame的使用很频繁,由于在网页中效果还算不错,就没有多加思考,但随着项目的进展,发现iFrame在Mobile客户端的webview里面效果很差,甚至不起作用,不得以我们开始大动干戈地将iFrame一个一个的替换掉。至此我想iFrame是好是坏,我们大可不必过多去想,我们要做的是了解清楚它的方方面面,有选择有针对的去使用她。

  • 相关阅读:
    T4模板使用记录,生成Model、Service、Repository
    sortablejs + vue的拖拽效果 列表个数不固定 刷新后保持拖拽后的效果
    vue获取input焦点,弹框后自动获取input焦点
    vue proxy 跨域代理
    vue 同步 $nextTick setTimeout 执行的顺序
    js手写日历插件
    js数组随机排序
    vue自定义插件
    elementui 自定义表头 renderHeader的写法 给增加el-tooltip的提示
    awit的用法,等待执行结果
  • 原文地址:https://www.cnblogs.com/youngC/p/2942548.html
Copyright © 2020-2023  润新知