2017-07-27 65 views
1

我有一個fb.js文件,它包含在我的應用程序的所有js文件中。 fb.js包含一個身份驗證功能window.fbAsyncInit,它異步地從Facebook獲取用戶的其他詳細信息&。該數據是該頁面的其他功能所必需的。在所有JavaScript頁面中的其他函數之前運行全局函數

我現在面臨的問題是

A.現在所有的功能都運行異步不論其發生。我需要在頁面&的其他功能等待響應才能運行其他功能之前運行此功能。這樣我可以在其他函數中使用此函數的響應。

B.可能是我沒有在每個頁面中包含此認證功能&運行一次當應用程序第一次加載&將數據傳遞給其他頁面。這是可以實現的嗎?我正在使用JQuery。

全部排除window.fbAsyncInit一個頁面的功能範圍內觸發:在頁面

$(document).ready(function() { 
    dummyFunction(); 
}); 

發生

window.fbAsyncInit{} 
Other functions within $(document).ready(function() {}); 

低於Facebook的功能

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'xxxx', 
     xfbml  : true, 
     version : 'v2.9' 
    }); 
    FB.AppEvents.logPageView(); 
    } 

免責聲明的一個片段:我沒有太多的JavaScript經驗。我更像是後端開發人員。

回答

2

你可以試着觸發一個事件來傳達Facebook的初始化已經完成。

// Write this line just below FB.init function 
$(document).trigger('facebookInitialized'); 

而且您需要在ready函數中註冊此事件的偵聽器。

$(document).bind('facebookInitialized',function(){ 
    // Here you can write all the logic to be executed after FB load. 
}); 
相關問題