Несколько fbAsyncInit?

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

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

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

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

var oldCB = window.fbAsyncInit; window.fbAsyncInit = function(){ if(typeof oldCB === 'function'){ oldCB(); } //Do Something else here }; 

Иногда facebook api может вызывать 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 }; } 

есть свойство «static» в fbAsyncInit

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

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