为什么有些网站(如facebook)会在iframe中加载脚本?

时间:2010-02-14 20:17:38

标签: javascript html iframe

为什么有些网站(比如facebook)会在iframe中加载脚本?

这是否允许网站一次加载2个以上的资源,因为iframe的资源位于不同的网址?

4 个答案:

答案 0 :(得分:5)

您所看到的,可能是“Comet”通信的应用,使用隐藏的iframe作为数据通道。根据{{​​3}}对该技术的简短解释:

  

动态Web应用程序的基本技术是使用隐藏的IFrame HTML元素(内联框架,允许网站将一个HTML文档嵌入另一个HTML文档)。这个不可见的IFrame作为一个chunked块发送,它隐式地将它声明为无限长(有时称为“永远帧”)。当事件发生时,iframe逐渐填充脚本标记,其中包含要在浏览器中执行的JavaScript。由于浏览器以递增方式呈现HTML页面,因此每个脚本标记都会在收到时执行。

这可以用于类似聊天的事情,其中​​消息预期出现而没有明显的延迟,并且优选地没有针对新数据的定期“轮询”。如果这是您遇到的情况,您应该在框架中看到多个<script>元素,并且随着时间的推移应该添加更多元素。

答案 1 :(得分:4)

修改

所以要真正解决你的问题...我不知道!但是,以下信息可能会有所帮助:

Facebook会在您的应用程序ID前面添加所有JS变量和函数。

var ID;

变为

var 1262682068026-ID;

这会将javascript的范围限制为仅限您的应用程序,因此除非获得授权,否则您无法使用DOM获取他们的朋友,电话号码,电子邮件,地址等。它为你提供了一个小沙盘。

有关范围界定的更多信息: Facebook Docs

答案 2 :(得分:1)

iframe中加载的javascript无法访问父页面对象(跨域限制)

答案 3 :(得分:1)

他们在iFrame中加载了彗星(又名彗星,HTTP推送,长寿命等)连接,因为Internet Explorer最终会丢弃它:

http://cometdaily.com/2007/10/25/http-streaming-and-internet-explorer/

因为它实际上是一个持续的长时间轮询,这是一个阻止,这个黑客也增加了IE的2连接限制,导致更好的响应性,背景信息:

http://alex.dojotoolkit.org/2006/02/what-else-is-burried-down-in-the-depths-of-googles-amazing-javascript/