[英]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.