作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我已经初始化了 fb api
window.fbAsyncInit = function() {
FB.init({
appId : '351808841561163',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth: true
});
我有一个单独的 js 文件,其中包含一个函数:
function example(){
FB.api(
'/me/[namespace]:visit',
'post',
{ channel: link},
function(response) {
if (!response || response.error) {
console.log(response.error);
} else {
console.log('Follow was success! Action ID: ' + response);
}
});
}
当我调用它时,我得到 FB is undefined。
当我将函数放在 window.fbAsyncInit 中时,它工作正常,但我需要在 window.fbAsyncInit 外部调用 FB。
有没有办法做到这一点?
最佳答案
只需将您的函数排队,然后在 FB 初始化后立即调用它。以下代码保证您的函数将以正确的顺序调用,并在 FB 完成初始化后立即调用
您在示例之前和 FB 初始化脚本之前包含的帮助脚本:
var FB; // to avoid error "undeclared variable", until FB got initialized
var myQueue = new Array();
function queueAdd(f){
if (FB == undefined)
myQueue.push(f);
else
f();
}
function processQueue(){
var f;
while(f = myQueue.shift())
f();
}
您的函数示例:
function example(){
FB.api(
'/me/[namespace]:visit',
'post',
{ channel: link},
function(response) {
if (!response || response.error) {
console.log(response.error);
} else {
console.log('Follow was success! Action ID: ' + response);
}
});
}
queueAdd(example); // will run immediately if FB initialized. Otherwise, wait for FB first
和 Facebook 部分:
window.fbAsyncInit = function() {
FB.init(blablabla);
processQueue();
}
关于facebook - 如何在window.fbAsyncInit外调用FB.api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12743356/
我是一名优秀的程序员,十分优秀!