不使用IFrame的原因?

时间:2009-08-09 21:35:33

标签: iframe

是否有任何理由要使用iframe?我目前使用它从不同的服务器(注册页面 - 分布式应用程序的一部分)加载页面,以提供无缝体验。使用iframe被认为是不好的做法还是使用OK?

7 个答案:

答案 0 :(得分:16)

iframe是一个很棒的工具。它享有近乎通用的浏览器支持,易于实现并具有许多有用的功能。与任何其他HTML元素一样,它可以被滥用,但是智能地使用它可以在可靠的UI中发挥作用。

有些开发人员可能会争论使用AJAX,并且在某些情况下可能是更合适的方法,但AJAX不是灵丹妙药,而iframe可能是一个更简单的实现,对用户来说具有相同的最终结果。做任何最简单的事情,只有当你能够验证它是如何以及为什么不起作用时才改变它。

答案 1 :(得分:12)

继续使用iframe。以下是原因示例:

整个验证通过签证的事情真让我烦恼。我很高兴在一些我信任的网站购物,当我被重定向到我从未听说过的某个网站时(不是 visa.com)我必须填写其他形式并希望我被正确地重定向回购物网站。

最近我在John Lewis的网站上购物,他们在iframe 中提出了验证签名页面 - 太棒了!我还在看约翰路易斯的网站,所有发生的事情都是我被要求提供我的验证密码 - 没问题。

虽然作为一名网络开发人员,我知道它与普通的旧重定向之间没有技术差异 - 重定向 - 用户体验

答案 2 :(得分:10)

<强>优点:

        
  • 帮助缓慢使用徽章和广告等第三方内容
  •     
  • 安全沙箱
  •     
  • 并行下载脚本

<强>缺点:

        
  • 即使空白也很费钱
  •     
  • 阻止页面加载
  •     
  • 非语义

来源:Best Practices for Speeding Up Your Web Site

答案 3 :(得分:8)

iframe可以访问父文档的某些属性,例如使用parent.location.hrefparent.window.location将父框重定向到新位置(IE允许限制)。

当嵌入来自其他服务器的内容时​​,这非常适合网络钓鱼攻击(即使您信任该服务器可能会受到损害)。

iframe也可以用于各种其他攻击:IFrames security summary

答案 4 :(得分:3)

使用HTML 5,您将能够使用跨文档消息传递API从窗口到窗口发送消息,但是现在iFrame是任何类型的AJAX的最可行的替代方案,需要样式和脚本来加载数据

如果您想在iFrame中使用文本数据,请改用AJAX。如果您希望外部CSS或JavaScript在受保护的环境中工作,希望样式从头开始,或者需要访问跨域文档,请使用iFrame。

缺点是iFrame的可访问性通常很糟糕,尽管您可以通过确保使用屏幕阅读器的外部内容通知继续iFrame来防止这种情况。另请查看HTML规范,了解使iFrame更易于访问的其他方法。除此之外,明显的限制脚本,iFrame是一个伟大的工具,负责任和稀疏使用。

最后一个注意事项,堆满一个充满iFrames的页面绝对不是一个好主意,因为请记住,对于每个加载的iFrame,创建一个DOM,生成HTML请求并实例化文档包装,在进程中占用内存和带宽。在页面上将iFrame保持在最低限度,您将避免误导HTML文章中的强大工具。

答案 5 :(得分:3)

IFrame是在网页中“包含”外部内容的好方法。但是,有一些(小)缺点:

  • 如果IFrame不是来自同一个域,则安全沙盒会导致JavaScript出现问题。
  • 你不能让CSS在IFrame和父页面之间合作,除非你自己控制样式表。
  • 从索引的角度来看,IFrame的内容不存在。
  • 出于同样的原因,屏幕阅读器可能不喜欢IFrame。或者他们无法正确指出IFrame内容的相对含义。

除此之外,他们很棒!我提到的要点甚至可能被认为是优点,如果你考虑它(屏幕阅读器除外):原则上,IFrame不能影响其父页面的布局,它也不会受其父母的影响。< / p>

答案 6 :(得分:1)

作为一般规则,iframe对于SEO原因来说是一种糟糕的体验。所以,你问有没有理由不使用iframe?是的,如果您使用iframe,您将失去搜索引擎中的一些有机位置。

当然,存在可用性(并且应该)胜过页面的SEO值的可用性问题。