这里谷歌分析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