javascript - 如何处理 Facebook javascript SDK 事件?

标签 javascript jquery facebook

我有一个 javascript 代码,应该使用 Facebook API 执行一些功能。

根据文档,我按如下方式包含了 SDK。此代码包含在我的 Web 应用程序所有页面的模板中。 (在我的例子中,模板是添加到所有页面的东西......)

window.fbAsyncInit = function() {
  FB.init({
    appId            : 'xxx',
    autoLogAppEvents : true,
    xfbml            : true,
    version          : 'v2.10'           
  });

  jQuery('.FacebookLoadingFlag').trigger('facebook:init');
  FB.AppEvents.logPageView();                        
};

现在,每当我需要调用 Facebook 函数时,我都会在每个页面上尝试在 SDK 初始化后执行它,如下所示:

window.onload = function() {           
  $(".FacebookLoadingFlag").bind("facebook:init", function() {   
    // code here
  });
}

此实现效果不佳,因为有时 SDK 已初始化但尚未加载整个页面,因此事件 facebook:init 在获得事件处理程序之前触发。因此代码不会执行。

如果删除 window.onload,我有时会收到错误消息,提示未找到 jQuery。这意味着 jQuery 尚未加载。

在这两种情况下,代码通常不会执行。

有没有人知道何时执行此代码并确保它始终被执行?我是 Javascript 的新手,我不知道如何处理事件。

最佳答案

我认为您应该学习本教程,它是特定于 jQuery 的:

https://developers.facebook.com/docs/javascript/howto/jquery/v2.10

来自教程:

In this tutorial, you’ll learn how to incorporate the Facebook JavaScript SDK into your jQuery-based web app. Both jQuery and the JavaScript SDK provide their own solutions for deferring code execution until the libraries have loaded, and this tutorial will help you combine the two and ensure both are ready to use before you invoke the SDK.

您所遵循的教程是通用教程。

根据我上面链接的 jQuery 特定指南,您的代码应如下所示:

<html>
<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
  <link rel="stylesheet" href="style.css" />
  <title>jQuery Example</title>
  <script>
    $(document).ready(function() {
      $.ajaxSetup({ cache: true });
      $.getScript('//connect.facebook.net/en_US/sdk.js', function(){
        FB.init({
          appId: '{your-app-id}',
          version: 'v2.7' // or v2.1, v2.2, v2.3, ...
        });
        // After initialization code here
        $('#loginbutton,#feedbutton').removeAttr('disabled');
        FB.getLoginStatus(updateStatusCallback);
      });
    });
  </script>
</head>

关于javascript - 如何处理 Facebook javascript SDK 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46518322/

相关文章:

javascript - 使用 jquery load 和 php 从外部网站抓取信息

javascript - 想要使用jquery点击f12

javascript - 从 uploader 中删除 "All Files"选项

html - Chrome 中的 Facebook 登录(连接)按钮渲染失败

ios - 在 Facebook 上分享图片时添加默认句子

android - 在Android Studio中添加facebook sdk导致 'no resource found'错误

javascript - NVD3图表中的JSON数据格式

javascript - data ("key", value) 方法是否设置数据属性?

javascript - 浏览器仅应用来自第一个动态添加的样式元素的 css

asp.net - 从 jQuery 调用 ASP.NET ASMX Web 服务