为什么我需要使用:
(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 async="true" type="text/javascript" src="http://www.google-analytics.com/ga.js"></script>
我能看到的唯一原因是他们有一个不同的SSL子域。如果不是这样,有没有理由使用这种脚本注入技术?
答案 0 :(得分:6)
能够根据父页面的协议提供http
或https
是一个原因。
由于脚本是通过运行JS代码插入的script
标记注入的,因此不会阻止页面加载。这是另一个原因。但这也很好地通过新的HTML5 async属性实现(但这与旧版浏览器不兼容 - 并且GA绝对需要与几乎所有这些浏览器兼容)