我正试图在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的值为continue。无限for循环会完成什么?
Facebook页面有一个巨大的javascript callstack,所以我无法通过它。有人猜或有人知道吗?提前谢谢!
答案 0 :(得分:2)
见这里: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对象,其中包含其他人写的内容,并将其显示给您。