2012-10-24 3 views
2

документация для Facebook кнопки предлагает включить следующий сценарий, как:Почему скрипт facebook включает сложнее?

<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_GB/all.js#xfbml=1"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

Как я читал, это ничего не делает больше, чем добавить внешний all.js файл до первого тега сценария на странице.

<script id="facebook-jssdk" src="//connect.facebook.net/nl_NL/all.js#xfbml=1"></script> 

Есть ли причина не просто добавить заполненный тег сценария в исходный код страницы в первую очередь?

+0

Вам также не нужно «id =« facebook-jssdk »». – artuska

ответ

3

От Javascript SDK page;

Этот код загружает SDK асинхронно, поэтому он не блокирует загрузку других элементов вашей страницы.

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

0

В чем разница между этим:

<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_GB/all.js#xfbml=1"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

и это:

<script src="//connect.facebook.net/nl_NL/all.js#xfbml=1" async></script> 

?

+0

О, я понял - второй пример будет выполнять скрипт асинхронно, но загрузка будет синхронной. – artuska

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