Rau*_*net 32 javascript facebook
有时我在加载http://connect.facebook.net/en_US/all.js时遇到"FB未定义"问题
我意识到问题是因为有时我的网站只是没有加载该文件.所以它什么都没有,而FB对象确实不存在.
我的解决方案是在发生这种情况时阻止我的用户,所以我在JavaScript中尝试了以下代码但似乎没有工作:
if (FB) {/*run the app*/} else {/*alert the user*/}
if (FB!==false) {/*run the app*/} else {/*alert the user*/}
if (FB!='undefined') {/*run the app*/} else {/*alert the user*/}
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答!
ifa*_*our 77
我认为你应该解决主要问题,哪个解决方案由Facebook提供(异步加载SDK):
您应该在要加载它的每个页面上的开始标记之后直接插入它:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'your-app-id',
xfbml : true,
version : 'v2.1'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
Run Code Online (Sandbox Code Playgroud)
从文档:
Facebook SDK for JavaScript没有任何需要下载或安装的独立文件,而只需要在HTML中包含一小段常规JavaScript,它们会将SDK异步加载到您的页面中.异步加载意味着它不会阻止加载页面的其他元素.
更新:使用文档中的最新代码.
Rob*_*ine 16
假设FB是包含Facebook对象的变量,我会尝试这样的事情:
if (typeof(FB) != 'undefined'
&& FB != null ) {
// run the app
} else {
// alert the user
}
Run Code Online (Sandbox Code Playgroud)
为了测试普通旧JavaScript中未定义的内容,您应该使用"typeof"运算符.您显示的示例只是将它与字符串'undefined'进行比较,将评估为false,除非您的FB对象确实包含字符串'undefined'!
另外,您可能希望使用各种工具,如Firebug(在Firefox中),看看您是否可以找出Facebook文件未加载的原因.
小智 11
我猜你错过了;在结束的大括号}上放置分号window.fbAsyncInit = function() { ... };
小智 9
对于仍然有这个FB错误的人,我使用这个厚脸皮修复这个问题.
而不是http://connect.facebook.net/en_US/all.js,我使用HTTPS并将其更改为https://connect.facebook.net/en_US/all.js ,它解决了我的问题.
| 归档时间: |
|
| 查看次数: |
100848 次 |
| 最近记录: |