2013-07-10 106 views
3

據說javascript代碼必須放在</body>標籤之前。但是生成Facebook的Like按鈕後,我得到這個消息:我應該在哪裏放置Facebook Like Javascript代碼?

添加JavaScript SDK頁面上一次, 開幕<body>標籤後,最好是正。

這是我必須添加代碼:

<div id="fb-root"></div> 
<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=675640525783719"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 
+0

什麼是你的問題?正如他們所說的,你需要把它放在開始的身體標籤之後。 –

+0

您可以發佈完整的網址嗎? – 2013-07-10 12:49:47

回答

1

難道正如他們所說的,把它分辯開盤後<body>標籤:

<html> 
<body> 
<div id="fb-root"></div> 
<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=675640525783719"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

//rest of your code 

</body> 
</html> 
+2

感謝,但你能不能給個說法? – ziiweb

3

它並不特別無論身在何處你把它,只要之前</body>標籤。只是<body>之後將其添加到頁面的頂部(可確保SDK會下載,並提供頁面應該任何JavaScript進一步下跌的網頁,請直接訪問FB對象。

<div id="fb-root"></div>需求是上述的任何地方<script>...</script>標籤被放置,因此SDK可以找到該專區將資源添加到它。

1

我有點晚,但我做了一些搜索自己這個話題。

什麼那個小腳本正在做的事實際上是下載另一個腳本異步(實際用於其API的那個)並將其注入到頁面中。

默認情況下,網頁瀏覽器(至少舊版瀏覽器)會停止渲染並等待下載外部腳本。這就是爲什麼經常推薦將腳本放在主體的最後。但是,通過異步加載腳本,它們不會阻止渲染。

現代瀏覽器都支持async腳本標籤:

<script src="http://example.com/script.js" async> 

瀏覽器支持asynchttp://caniuse.com/#search=async

我覺得這是更好的方法,可以異步加載腳本這些天,但Facebook希望儘可能最好的支持( IE9及更低版本)。如果瀏覽器不支持async,那麼該屬性將被忽略,並且該腳本應該加載得很好,儘管是同步的。

我不確定這一部分,這就是爲什麼我自己尋找答案的原因是:如果您已經異步加載腳本,爲什麼不把它放在<head>?爲什麼具體的身體的開始?我不知道。