2012-10-24 2 views
2

제안 다음 스크립트를 포함 버튼과 같은 페이스 북에 대한 문서 : 나는 그것을 읽으면서왜 페이스 북 스크립트가 복잡하게 포함되어 있습니까?

<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를 비동기 적으로로드하므로 페이지의 다른 요소로드를 차단하지 않습니다.

다른 말로 표현하면, 즉시 포함 할 가능성이 있지만 사용자가 페이지를 더 느리게로드하는 것처럼 느낄 수 있습니다.

<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

은이 사이의 차이점은 무엇입니까?

+0

아, 알겠습니다. 두 번째 예제는 스크립트를 비동기 적으로 실행하지만 로딩은 동기식입니다. – artuska