javascript - 在所有 JavaScript 页面中的其他函数之前运行一个全局函数

标签 javascript jquery html

我有一个 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/

相关文章:

javascript - 如何比较两个数组是否相等?

javascript - 再次调用调用函数

javascript - 如何使用 jQuery 处理 "defile"文本?

php - 使用 jQuery 将背景图像 css 设置为 wordpress 中的特色图像

html - 默认 css 如何影响呈现的 html 对象页面

javascript - 移动浏览器中的网络 worker

javascript - jQuery Value 根据条件添加和删除属性值

javascript替换特殊字符

jquery - Owl Carousel css 设置为显示 :none when page has loaded

javascript - 将参数传递给 Ajax 安全方式