0

«Официальный» способ загрузки SDK, предложенной документации ФБ, заключается в следующем:Различные способы загрузки JS SDK

<script>(function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=APP_ID"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

Однако, я уже видел, что это делается так:

<script src="http://connect.facebook.net/en_US/all.js"></script> 
... 
FB.init(APP_ID, true, true, true); 

В чем разница (на практике) между этими двумя?

Я пишу приложение GWT, которое использует социальные плагины. Какой был бы лучший способ загрузить его?

ответ

1

Я не работал непосредственно с facebook API, хотя я написал много GWT, интегрированный с страницы уровня JavaScript

Посмотрите на класс ScriptInjector - один метод позволяет вводить строку, другой позволяет вам вводить скрипт из URL-адреса и получать обратный вызов при его загрузке.

Другая мысль: JSNI позволяет вам называть javascript из вашего приложения Java. Если вы можете включить этот сценарий тег на странице загрузки, вы могли бы назвать это FB.init из метода Java:

private native void nativeFbInit(String appId) /*-{ 
    $wnd.FB.init(appId, true, true, true); 
}-*/; 
+0

Просто выполните следующие действия: чтобы загрузить файл FB SDK с помощью 'ScriptInjector', нужно использовать' ScriptInjector.fromURL (...). SetCallback (...). SetWindow (ScriptInjector.TOP_WINDOW) .inject() ; 'поэтому скрипты могут быть вызваны' $ wnd.FB ... ' – Marcelo

+0

О, это новый для меня, спасибо за обмен. Я предположил, что setCallback недействителен и не понял, что есть другие варианты его настройки. –

1

разница в том, что первый подход является асинхронным, а потом синхронизируется. , если вы хотите, чтобы страница загружалась/отображалась быстрее, и вы можете сделать это с помощью fb sdk для этой цели (показывая страницу), а затем перейти к первому.

1

Я бы предложил первый метод, так как он будет загружать библиотеку асинхронно, помогая предотвратить «блокировку» остальной загрузки вашей страницы. Например, если вы использовали второй метод, и Facebook был медленным или медленным, чтобы отвечать на обслуживание JS-файла, вся ваша страница могла бы «сидеть там», пока она пыталась загрузить скрипт.

Однако, с учетом сказанного, в моем собственном опыте у меня иногда возникала «странность» с асинхронной версией, и в итоге я использовал второй метод (синхронный) и убедился, что это было последнее мой </body> на странице.

 Смежные вопросы

  • Нет связанных вопросов^_^