Несколько fbAsyncInit's? - PullRequest
       4

Несколько fbAsyncInit's?

3 голосов
/ 10 февраля 2012

На моем сайте я использую асинхронную загрузку Facebook JS SDK. Для его настройки я использую стандартный файл FB.init внутри функции window.fbAsyncInit.

Однако проблема в том, что на моем сайте эта функция есть на каждой странице. Однако, когда я на подстранице, я не могу напрямую добавить функцию JS из-за дизайна моего сайта, я должен скопировать и вставить всю функцию и добавить свои биты.

Я не думаю, что несколько fbAsyncInit возможны, так каков наилучший способ реализовать это?

Ответы [ 3 ]

5 голосов
/ 01 марта 2012

Вы можете использовать это вместо этого, чтобы проверить, есть ли у вас уже fbAsyncInit и объединить его в цепочку в этом случае:

var oldCB = window.fbAsyncInit;
window.fbAsyncInit = function(){
    if(typeof oldCB === 'function'){
        oldCB();
    }
    //Do Something else here
 };
3 голосов
/ 20 августа 2013

Иногда API Facebook может вызвать fbAsyncInit еще до того, как ваш второй fbAsyncInit даже запустился.Это исправит этот случай:

        if (window.fbAsyncInit.hasRun === true) {
            setup(); // do something
        } else {
            var oldCB = window.fbAsyncInit;
            window.fbAsyncInit = function () {
                if (typeof oldCB === 'function') {
                    oldCB();
                }
                setup(); // do something
            };
        }
0 голосов
/ 05 сентября 2012

в fbAsyncInit есть "статическое" свойство

Попробуйте ниже

if (window.fbAsyncInit && window.fbAsyncInit.hasRun) {
    // do sth
}
...