为什么人们仍在使用iframe?

Ven*_*tus 82 iframe

对我来说,iframe是纯粹的邪恶(好吧,也许不是那么纯粹).他们似乎遇到了很多麻烦.是的,您的整个网站将加载一次,然后您只需加载一个页面.但人们为此目的发明了AJAX.

我发现的最大问题之一iframe是我无法将链接粘贴到其中一个子页面,因为URL从未更改(是的,我知道有一个解决方法).其次,网络搜索引擎可能有问题正确索引网站.

有时这些网站的可访问性更差,有些浏览器甚至可以不正确地显示它们.

有更好的方法来设计没有(i)帧的布局.每天我都可以看到有人问过SO问题,比如"如何使用jQuery访问iframe?".

那么iframe的好处是什么?还有什么理由继续使用它们?我只是想知道为什么:)

(因为它不是一个真正的问题,它是一个CW)

Dan*_*eam 98

我可以想到两个原因(目前)为什么人们仍会使用iframe代替AJAX:

1)iframe绕过跨域原始策略(图像,脚本和样式不).这对于相对安全地从其他域名中提取站点/内容非常有用.基本上,这允许能够直观地显示来自其他域的数据,而不会让他们无限制地访问整个页面(就像JSONP能够做的那样).

2)你可以从iframe中加载多种类型的资源,而不仅仅是某些mime类型(你相对局限于应用程序/ javascript,application/x-javascript,text/css,text/xml,image/png,image/jpeg,带脚本的图像/ gif,XHR,图像和源代码).例如,如果我想向您显示PDF,我可以打开一个iframe,然后让Adobe Reader插件显示该文件.另外,在同一个域中,如果我想将脚本,样式和图像一起管道化(在页面上内嵌,图像必须是数据URI),我可以使用iframe完成此操作(如果它在同一个域中)域,端口和协议我也可以使用JavaScript访问它.

你知道Gmail是一组iframe吗?可见部分只是巧妙的定位.此外,许多OAuth实施(Twitter,Facebook,Google,Yahoo!)通常使用iframe将其域上的用户与成功的身份验证URL相关联(在用户登录后).

  • 重新#3,Gmail可以在没有iframe的情况下重写.**那么为什么人们仍然在现代浏览器中使用iframe?**这个问题没有答案. (3认同)
  • 重新#1,但HTTP标头可以阻止iframe ..... (2认同)
  • Re#2,但你可以在没有iframe的情况下完成,例如`<embed src ="http://www.pdf995.com/samples/pdf.pdf"type ="application/pdf">` (2认同)

ger*_*tas 20

IFRAME用于将第三方内容嵌入并隔离到网站中.

大多数网络广告解决方案都基于iframe - 因为它们在屏幕上提供安全性(跨域策略)和隔离矩形,可以通过第三方内容和脚本完全管理(常见的用例是广告).

IFRAMES的另一个现代用途是对AJAX应用程序的历史管理(常见的后退按钮解决方法).

FRAME是IFRAMES的糟糕版本.他们的使用正在下降.


Rei*_*ien 15

If a user has javascript disabled, iframes will work when ajax doesn't. This is not out of the question, considering that people use things like NoScript.

  • 这是事实,但在大多数情况下更改/添加/操纵iframe需要JavaScript(除了2我能想到的,链接到目标和`<form>`发布到目标). (4认同)

Cod*_*per 7

我在ajax网站上使用它们,当我需要上传文件而不重新加载页面时.