我正在尽我所能学习 javascript 中的慢速加载技术(如此处所述:http://www.obviously.com/tech_tips/slow_load_technique),以制作近乎实时的聊天应用程序等。
我知道 facebook 也用它来聊天。它首先调用此 url:http://0.1.channel.facebook.com/x/a_bunch_of_parameters这会持续很长时间,并带有连接:keep-alive。然后它突然返回这个 javascript:
for (;;);{"t":"continue"}
我没有登录聊天,所以它显然不包含任何聊天数据,但我想知道处理结果的周围 javascript 会是什么样子。可能它解析 json 并看到 t-key 具有继续的值。无限的 for 循环会完成什么?
Facebook 页面有一个巨大的 javascript 调用堆栈,所以我无法浏览它。有人能猜到或有人知道吗?提前致谢!
最佳答案
请看这里:How to restrict JSON access?
无限循环是一种防止外部资源调用脚本的措施。如果我想从我的站点调用该链接,我必须使用
<script src="http://0.1.channel.facebook.com/x/a_bunch_of_parameters"></script>
这将立即开始无限循环。我无法获得 Facebook 返回的实际消息。
facebook 可以使用 XMLHttpRequest 从该地址提取并在评估响应消息之前解析出无限循环代码。由于跨域安全性,我不能从我的站点执行此操作。
对于 facebook 的使用,消息可能类似于
for (;;);
{
"msg" : {
"from" : "lincolnk",
"content": "derp!"
}
}
他们会解析出包含其他人编写的任何内容的 javascript 对象并将其显示给您。
关于Javascript 慢加载技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892347/