【发布时间】:2012-07-01 09:39:09
【问题描述】:
我正在尝试优化 Facebook SDK 的使用。查看 Chrome 的网络选项卡显示,当 SDK 加载时,它会拉入许多其他文件:
第一个是 all.js,其中包含 Facebook API。截图中的其余资源是在调用FB.init之后加载的。
about:blank 有 3 次调用,xd_arbiter.php 有 3 次调用。 oauth 有 2 次调用。我不知道为什么前两个调用有 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 个。但是对 about:blank 和 xd_arbiter.php 的其他调用从何而来?通过JSBeautifier 运行 all.js 并遵循代码,我已经走到了这一步,但我看不出第三次请求这些文件的原因或方式。
【问题讨论】:
标签: javascript facebook-javascript-sdk