为什么有些网站(比如facebook)会在iframe中加载脚本?
这是否允许网站一次加载2个以上的资源,因为iframe的资源位于不同的网址?
答案 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连接限制,导致更好的响应性,背景信息: