本教程将介绍如何在 jQuery Web 应用内集成 JavaScript 版 Facebook SDK。jQuery 和 JavaScript SDK 都提供了独特的解决方案,以确保在库加载完成后再执行代码。本教程将帮助您整合 jQuery 和 JavaScript SDK,确保在调用 SDK 之前,这两种解决方案都可以使用。
本教程中的示例使用 Google Hosted Libraries CDN 提供的 jQuery 2.0.0。如需详细了解 jQuery,请参阅 jQuery 文档。
将 jQuery 添加至文件头,并实施 $(document).ready()
方法,该方法将在 DOM 完成且 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() { // Execute some code here }); </script> </head>
在这里,我们并不使用默认的异步脚本导入 JavaScript 版 Facebook SDK,而是使用 jQuery 的 getScript()
方法从用户区域设置的正确网址导入 SDK。您可以省略网址开头的协议,让系统根据实际网址使用匹配的协议。
默认情况下,jQuery 时间戳会异步处理请求,避免其被浏览器缓存。您可以使用 ajaxSetup()
方法停用此功能,以便在页面之间本地缓存 SDK。
getScript()
是异步方法,所以您可以传递异步回调函数,并在其中像往常一样执行 SDK 初始化代码。请通过应用面板添加应用编号。
$(document).ready(function() { $.ajaxSetup({ cache: true }); $.getScript('https://connect.facebook.net/en_US/sdk.js', function(){ FB.init({ appId: '{your-app-id}', version: 'v2.7' // or v2.1, v2.2, v2.3, ... }); $('#loginbutton,#feedbutton').removeAttr('disabled'); FB.getLoginStatus(updateStatusCallback); }); });
将所有 SDK 调用逻辑放入 getScript
回调函数可确保 FB 对象存在,但这对于复杂的应用来说并不是最佳的设计模式。由于 FB
对象具有全局性,所以也可以将 SDK 逻辑置于 getScript
回调函数之外,只要您确定此对象在调用之前就存在。或者,您可以使用模块依赖项框架(例如 RequireJS)确保将 FB 对象加载为应用设置。