我无法让Facebook Javascript函数在某些jQuery命令中运行...
这有效:
$("a#GetScrollTest").click( function() {
FB.Canvas.getPageInfo(function(fbCanvasInfoObject) {
var fbPosition = fbCanvasInfoObject.scrollTop;
$("a#GetScrollTest").html("The scroll top value
is " + fbPosition + "px");
});
return false;
});
这不会(返回'Uncaught ReferenceError:FB未定义'):
$("a.scrollLink").each(function() {
$(this).click(function(){
FB.Canvas.getPageInfo(function(fbCanvasInfoObject) {
var fbPosition = fbCanvasInfoObject.scrollTop;
$(this).html("The scroll top value is " + fbPosition + "px");
});
return false;
});
});
任何人都知道为什么click方法有效,但.each()方法却没有?为什么返回FB未定义?电话在同一个地方。
答案 0 :(得分:1)
以window.fbAsyncInit
开头的大脚本块的重点是Facebook SDK以异步方式加载。
即使您在jQuery文档就绪回调中对FB
进行了调用,但这还不足以确保在执行该代码时加载SDK。
幸运的是,完全存在window.fbAsyncInit
目的:在SDK加载之前它不会运行。
分配给
window.fbAsyncInit
的功能在SDK完成后立即运行 已加载。加载SDK后要运行的任何代码 应该放在这个函数中并在调用FB.init之后。 例如,您可以在此处测试其登录状态 用户或订阅您的应用程序所在的任何Facebook活动 感兴趣。
只需将$("a.scrollLink").each(function()
移动到fbAsynchInit函数中,所有人都应该感到高兴。