我不知道为什么它找不到我为 JS 加载的库:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<link href="Content/Styles/Site.css" rel="stylesheet" type="text/css" />
<title></title>
<script src="Content/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="Content/js/jquery.cookie.js" type="text/javascript"></script>
<script src="Content/js/FacebookAPI.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div id="facebookPhotos-iFrameContent">
<div>
<p>Log into facebook by clicking on the button below</p>
<p id="facebook-LoginButtonContainer">
<input type="image" id="btnFacebookLogin" src="images/facebookLoginBtn.jpg" />
</p>
<p><asp:DropDownList ID="facebookAlbumDropdown" runat="server" /></p>
<div id="facebookPhotosContainer" />
</div>
</div>
<div id="fb-root"></div>
</form>
<script type="text/javascript">
var facebookApplicationID = '13xxxxxxxxxxxxx'; // edited out for this forum thread
window.fbAsyncInit = function()
{
FB.init({ appId: facebookApplicationID, status: true, cookie: true, xfbml: false });
};(function ()
{
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
$('fb-root').appendChild(e);
} ());
</script>
<script type="text/javascript">
var photosContainerDivID = 'facebookPhotosContainer';
var loginButtonID = 'btnFacebookLogin';
var dCookieValues = null;
var accessToken = null;
var userID = null;
// WIRE UP EVENTS //
$('#' + loginButtonID).click(function ()
{
alert("inside $('#' + loginButtonID).click(");
LoginToFacebook();
});
...
当我加载页面时,出现以下错误:
FB is not defined
[Break on this error] FB.getLoginStatus(function (response)
FacebookAPI.js (line 195)
我已在“这是什么回调?”中加载了 Facebook JS SDK?
;(function ()
{
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
$('fb-root').appendChild(e);
} ());
不确定我在这里缺少什么。
更新:
var facebookApplicationID = 'xxxxxxxxxxxxxxxx;
window.fbAsyncInit = function () {
alert("got here");
// Initialize/load the JS SDK
// cookie is set to true to activate JS SDK cookie creation & management
FB.init({ appId: facebookApplicationID, status: true, cookie: true, xfbml: false });
// now that the Facebook JS SDK is Initialized, continue with core logic
FacebookJsSdkInitializedCallback();
};
(function () {
var e = document.createElement('script');
e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
$('fb-root').appendChild(e);
} ());
</script>
<form id="form1" runat="server">
<div id="facebookPhotos-iFrameContent">
<div>
<p>Log into facebook by clicking on the button below</p>
<p id="facebook-LoginButtonContainer">
<%--<asp:ImageButton ID="btnFacebookLogin" runat="server" ImageUrl="images/facebookLoginBtn.jpg" />--%>
<input type="image" id="btnFacebookLogin" src="images/facebookLoginBtn.jpg" />
</p>
<p><asp:DropDownList ID="facebookAlbumDropdown" runat="server" /></p>
<div id="facebookPhotosContainer" />
</div>
</div>
<div id="fb-root"></div>
</form>
<script type="text/javascript">
var photosContainerDivID = 'facebookPhotosContainer';
var loginButtonID = 'btnFacebookLogin';
var dCookieValues = null;
var accessToken = null;
var userID = null;
function FacebookJsSdkInitializedCallback()
{
// bind the login button
$('#' + loginButtonID).click(function () {
alert("inside $('#' + loginButtonID).click(");
LoginToFacebook();
});
}
我现在收到这些错误,但我仍然不知道为什么。显然我现在添加了一个回调,所以我知道初始化已经完成。但我认为将库加载到页面的代码失败了:
$("fb-root").appendChild is not a function
[Break on this error] $('fb-root').appendChild(e);
所以这是可能的,因为 jQuery 库尚未加载,但此异步方法在加载之前运行。所以不确定如何处理这个问题。您可以在顶部看到我的 jQuery 包含内容。
最佳答案
由于您对 FB API 使用异步加载方法,因此当您稍后调用它时,它不会被加载。您有两个选择:
1)切换为同步加载方式(参见first example on this page)
2) 添加一些回调到window.fbAsyncInit()
函数,以便您知道 API 何时加载并可供使用:
window.fbAsyncInit = function () {
FB.init({ appId: facebookApplicationID, status: true, cookie: true, xfbml: false});
fbInitializedCallback();
}
function fbInitializedCallback() {
// WIRE UP EVENTS //
....
LoginToFacebook();
}
顺便说一句,如果您选择保留异步方法,您应该在打开 <body>
后立即放置该代码标记,它不会减慢您的页面加载速度。
关于javascript - Facebook JS SDK 语法无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3322516/