簡體   English   中英

如何處理Facebook javascript SDK事件?

[英]How to handle Facebook javascript SDK events?

我有一個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。

在這兩種情況下,代碼通常都不會執行。

有誰知道何時執行此代碼並確定將始終執行? 我是Java語言的新手,我不知道如何處理事件。

我認為您應該遵循本教程,該教程特定於jQuery:

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

從教程中:

在本教程中,您將學習如何將Facebook JavaScript SDK集成到基於jQuery的Web應用程序中。 jQuery和JavaScript SDK都提供了自己的解決方案,用於將代碼執行推遲到庫加載之前,並且本教程將幫助您結合使用這兩種方法,並確保在調用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM