0

я не могу получить функции Facebook Javascript для работы внутри некоторых команд JQuery ...Использование Facebook «FB.Canvas.getPageInfo» внутри функции 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; 
    }); 
}); 

Кто знает, почему один метод нажмите работает, но метод .each() не делает? Почему он не возвращает FB? Вызовы находятся в одном и том же месте.

ответ

1

Весь смысл этого большого блока сценариев, начиная с window.fbAsyncInit, заключается в том, что SDK для загрузки загружается асинхронно.

Несмотря на то, что у вас есть ваши вызовы от FB внутри обратного вызова документа jQuery, этого недостаточно для обеспечения того, чтобы SDK загружался при выполнении этого кода.

К счастью, window.fbAsyncInit существует для точно эта цель: она не будет работать до загрузки SDK.

От Facebook's docs:

The function assigned to window.fbAsyncInit is run as soon as the SDK is loaded. Any code that you want to run after the SDK is loaded should be placed within this function and after the call to FB.init. For example, this is where you would test the logged in status of the user or subscribe to any Facebook events in which your application is interested.

Просто переместите $("a.scrollLink").each(function() в функцию fbAsynchInit и все должны быть счастливы.

+0

Я не могу заставить jquery работать в функции fbAsynchInit. Есть ли что-то, что мне нужно добавить для переключения с javascript на jquery внутри него? Благодаря! – chuuke

+0

У меня есть jQuery, работающий внутри fbAsyncInit на моих страницах. Ничего особенного там не было. – DMCS