我有一个 fb.js 文件,它包含在我的应用程序的所有 js 文件中。
fb.js 包含一个身份验证函数 window.fbAsyncInit
,它异步运行以从 Facebook 获取用户的 ID 和其他详细信息。页面的其他功能需要此数据。
我面临的问题是
一个。现在,所有函数都在异步运行,无论它们是否出现。我需要在页面的其他功能之前运行此功能并等待响应,然后再运行其他功能。这样我就可以在其他函数中使用这个函数的响应。
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 经验。我更像是一名后端开发人员。
最佳答案
您可以尝试触发一个事件来传达 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.
});
关于javascript - 在所有 JavaScript 页面中的其他函数之前运行一个全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341349/