該如何加載google-analytics(或其他第三方)的JS
Posted on 2010-05-13 10:10 BearRui(AK-47) 閱讀(4329) 評(píng)論(8) 編輯 收藏 所屬分類: 高性能WEB開發(fā)很多網(wǎng)站為了獲取用戶訪問網(wǎng)站的統(tǒng)計(jì)信息,使用了google-analytics或其他分析網(wǎng)站(下面的討論中只提google-analytics,簡(jiǎn)稱ga)。注冊(cè)ga后,ga就會(huì)生成一段js腳本,很多人直接把這段js復(fù)制到<body>的最后面就完事(包括 博客園、CSDN、BlogJava)??墒莋a自動(dòng)生成的這段JS真的就是最合理的嗎?
<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-123456-1"); pageTracker._trackPageview(); } catch(err) {}</script>
看這段代碼,使用document.write來加載JS,注意了,這樣加載js是阻塞加載的,就是這個(gè)js沒加載完,后面的所有資源和JS都不能下載和執(zhí)行。可能你會(huì)覺的這段代碼在body的最后面,后沒已經(jīng)沒內(nèi)容,沒什么會(huì)阻塞的了。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ">
<html xmlns=">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="></script>
<script type="text/javascript">
$(document).ready(function(){
$.get("
});
</script>
</head>
<body>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-123456-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.src = gaJsHost + "google-analytics.com/ga.js";var done = false; // 防止onload,onreadystatechange同時(shí)執(zhí)行
// 加載完畢后執(zhí)行,適應(yīng)所有瀏覽器
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){
done = true;
try {
var pageTracker = _gat._getTracker("UA-123456-16");
pageTracker._trackPageview();
} catch(err) {}
script.onload = script.onreadystatechange = null;
}
};
head.insertBefore(script,head.firstChild);
</script>

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); $.getScript(gaJsHost + "google-analytics.com/ga.js",function(){ try { var pageTracker = _gat._getTracker("UA-123456-16"); pageTracker._trackPageview(); } catch(err) {} });
有需要請(qǐng)查看:高性能WEB開發(fā)系列
[博客]: http://www.aygfsteel.com/bearrui/
[聲明]:本博所有文章版權(quán)歸作者所有(除特殊說明以外),轉(zhuǎn)載請(qǐng)注明出處.