我正試圖優化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)你能解釋一下嗎? –