我听到了无数原因,为什么不使用HTML框架,因为它们缺乏可访问性,普遍缺乏用户体验,它们完全没有效率/不可维护,或者它们只是过时了。
这一切都让我有两个问题:
答案 0 :(得分:13)
(1)不是天生的。 iframe有许多不受框架问题影响的用例。只要您希望混合来自其他安全上下文的文档,或者没有父页面使用的脚本和样式,它们就非常有用。
然而, 可能'使用像框架一样的iframe':将页面拆分为单独的iframe区域,跨框架链接导致无法播放的导航混乱书签,开放新标签等。
(2)今天我不会使用任何框架。他们保留大量页面内容的用例有限,您不希望在每个导航上重新加载。但是现在我们只使用XMLHttpRequest
来更新页面的一部分。
即便如此,也没有注意使页面更改链接可访问(使用哈希历史记录并为每个哈希链接具有静态链接模拟,与真实<a>
链接,以响应中间点击等al),使用XMLHttpRequest
更新/导航自身的页面将重新创建许多帧的导航问题,具有强烈的负面可用性,可访问性和SEO影响。
我觉得有点可悲的是,许多作者正在制作华而不实的“现代”动画网站,这些网站天真地使用jQuery的load()
或类似的东西,表现出古老的所有最糟糕的行为,讨厌帧。
答案 1 :(得分:4)
(1)否。目前有iframe的合法用途,今天没有理由在现代浏览器中使用框架。
(2)不要使用框架;还有其他更简单的解决方案可以产生相同的效果。
仅在嵌入整个网站时才使用iframe是最合理的选项。虽然很少见,但有时这是有道理的。
简而言之,框架/框架集/ noframe标签是从HTML5中取出的原因,但iframe将会延续。
(示例)如果站点A必须包含来自站点B的页面(代理似乎来自站点A),那么站点B css和javascript可以并且通常将完全软管站点A.这是合理的原因。< / p>
答案 2 :(得分:1)
如果由于某种原因你有“嵌套表格”。
假设您有一个产品编辑表单,并且在此表单中您有一个带有其他表单的区域,可以说允许您输入客户列表以发送此产品的简报。
客户根本不与产品相关,并且与产品没有数据库关系。它们与产品完全不同。
在这种情况下,我会在客户添加表单的情况下创建一个IFrame,并提交在IFrame中提交表单的按钮。
我没有找到比使用IFrame更好的方法来实现所描述的场景。 是的,我要求在同一页面上放置两个表格,并且新闻稿表格应放在产品编辑表格中。业务需求由老板决定。
答案 3 :(得分:1)
您可以使用iframe访问您网站中第三方的广告,而无需向包含iframe的父文档提供任何其他控制或消息。
通过这种方式,您可以访问网站中的广告,同时防止来自未知资源的攻击
The mozilla dev pages explains it better:
HTML元素表示嵌套的浏览上下文,有效地将另一个HTML页面嵌入到当前页面中。