我正试图优化Facebook SDK的使用。看着Chrome的网络选项卡显示了我,当加载SDK,它拉在许多其他文件:为什么Facebook JavaScript SDK请求所有这些文件?
第一个是all.js,其中包含Facebook的API。屏幕截图中的其余资源在调用FB.init
后加载。
有3个呼叫约:空白和3调用xd_arbiter.php。有2个电话oauth。我无法弄清楚为什么前面两个有3个电话。
看来,all.js创建2个iframe
元素(如果创建加载SDK通过HTTPS提供的页面,只有一个 - 在fb_xdm_frame_https
一个在这种情况下,似乎2项请求作出,而不是3):请
<div id="fb-root" class=" fb_reset">
<div style="position: absolute; top: -10000px; height: 0px; width: 0px; ">
<div></div>
<div>
<iframe id="fb_xdm_frame_http" name="fb_xdm_frame_http"></iframe>
<iframe id="fb_xdm_frame_https" name="fb_xdm_frame_https"></iframe>
</div>
</div>
</div>
空白页,因为iframe
元素没有src
属性(它是通过JavaScript后来添加)创建的。当它被设置时,它被设置为xd_arbiter.php。
这样解释3 2但是,在做其他的调用约:空白和xd_arbiter.php从何而来?通过运行all.js到JSBeautifier并遵循代码,我已经得到了这么多,但我看不到为什么或如何第三次请求这些文件。
谢谢。据我所知,没有对'getLoginStatus'的调用,但'status'选项被设置为'true'。将它设置为“false”似乎可以减少我所期望的请求数量。 –
那么你绝对是在做隐式认证ping(status:true)以及做一个明确的认证 - 现在你只剩下明确的认证了。 –
@SeanKinsey但为什么2个Iframe(http,https)在我的页面上? AFAIK的整个想法是,FB.login打开弹出窗口,然后在其中创建另一个** IFRAME,并使用我的页面URL的“SRC”,然后他可以通过窗口将信息发送到父窗口。 top.sendUserObj({...})'。还是我得到这个错误? [我认为是这样的](http://lh5.ggpht.com/_J_O5p0PcuKo/SkWdB-b4ZsI/AAAAAAAAHiQ/UDa_U9xUFAo/s800/cross-domain-iframe-height-lg.jpg)....(ps我使用铬27,仍然看到这些iframes)你能解释一下吗? –