asp.net - 异步加载 Facebook Javascript SDK

标签 asp.net facebook facebook-graph-api facebook-javascript-sdk

我正在尝试异步加载 all.js 文件。

在我的 ASCX 文件中:

<div id="fb-root"></div>

我有一个包含 javascript 文件的用户控件:

window.fbAsyncInit = function () {
    FB.init({
        appId: 'XXXXXXXXXXXXX',
        status: true,
        cookie: true,
        xfbml: true,
        oauth: true
    });
};

(function () {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
} ());

但是,当页面呈现和加载时,FB 并不存在。

什么给了?

最佳答案

Sahil 的回答是正确的。在呈现文档时,无法保证已经加载了任何异步脚本。

如果从 fbAsyncInit 回调内部运行代码不是您想要的,您可以考虑两种替代方法:

选项 1

同步加载SDK:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>

这样做,FB 甚至在文档开始呈现之前就已经存在。

选项 2

检查SDK是否已加载,未加载时提供回退方案。

if (window.FB) {
    // use FB here ..
} else {
    // still loading, tell user to wait one more second
}

关于asp.net - 异步加载 Facebook Javascript SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695493/

相关文章:

facebook-graph-api - 关于 Facebook Places 的 Graph API

asp.net - 使用非 Web 应用程序中的 Asp.Net MVC 路由(测试)

ios - 在应用程序中手动终止 FB session

ios - Facebook sdk 4 iOS 用户信息电子邮件读取权限不起作用

Facebook Graph Api - 仅检索包含照片的 Wall 帖子

Facebook Graph Api 新的 feed 过滤器

c# - 无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)

asp.net - ASP.NET 中的 HttpHandler 是什么

c# - Razor:渲染在代码块内不起作用

ios - monotouch 编译 monotouch-bindings facebook api