這裏谷歌分析JavaScript跟蹤代碼是谷歌的異步Analytics跟蹤代碼:與HTML5異步屬性和相對協議網址
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-Y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
如果你問我這是很醜陋的。它可以被濃縮成這(來源:Mathias):
<script>
var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
但是,爲什麼我們不能只使用HTML5 async
屬性和protocol-relative URL?
<script src="//www.google-analytics.com/ga.js" async></script>
<script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];</script>
有了讓我們避免以檢查location.protocol
相對協議網址,並async
屬性應該照顧不顯眼裝載在modern browsers,和其他人將優雅降級。
這不是更好嗎?
請注意,這裏的協議檢查不是一個好主意。對於SSL,子域也會更改。 – Eduardo
我實實在在地嘗試了它,它似乎既是'https:// ssl.google-analytics.com/ga.js'和'https:// www.google-analytics.com/ga.js'。 – Eduardo
@EduardoCereto是的,有一段時間,沒有'https:// www'服務,但他們(默默地?)在一年前添加了它。 – Yahel