На моем сайте я использую асинхронную загрузку 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 }