【问题标题】:Why does Google Analytics dynamically inject javascript into the page为什么 Google Analytics 会动态地将 javascript 注入页面
【发布时间】:2013-02-11 15:40:10
【问题描述】:

为什么需要使用:

(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 子域。如果不是这样,还有什么理由使用这种脚本注入技术?

【问题讨论】:

    标签: javascript google-analytics


    【解决方案1】:
    1. 能够根据父页面的协议提供httphttps 是原因之一。

    2. 由于脚本是通过运行 JS 代码插入的 script 标签注入的,因此它不会阻止页面加载。这是另一个原因。但这也可以通过新的 HTML5 async 属性很好地实现(但这与旧浏览器不兼容 - GA 绝对需要与几乎所有浏览器兼容)

    【讨论】:

    • 主要是点#2(和子域)。第 1 点可以通过 just starting the URL without a protocol (... src="//www.google-analytics.com/ga.js" ...) 解决。
    • @T.J.Crowder - 是的,这也是正确的,但它适用于所有浏览器,包括旧浏览器。 Bcoz GA 必须与我想象的一切都超级兼容。
    • 另外,location.protocol 可用于动态检测正确的协议。
    • @techfoobar:与您想扔给它的任何东西兼容,请参阅我添加的链接。 :-)
    • @T.J.Crowder - 感谢您提供内容丰富的文章。所以这与 async 的组合应该意味着不再有脚本,可能会再过几年......
    猜你喜欢
    • 2015-09-08
    • 2012-08-03
    • 2020-05-02
    • 1970-01-01
    • 2016-06-16
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多