某些资源加载完成后会触发一些事件,例如https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded和https://developer.mozilla.org/en-US/docs/Web/Events/load
我想知道是否有办法找出加载Google Analytics代码的时间,即什么事件会触发Google Analytics加载?
我试图在不妨碍加载更重要资源的情况下包含脚本,例如HTML本身,图像,样式表和其他脚本。另外,我需要这个独立于jQuery等库。
答案 0 :(得分:0)
Universal Analytics使用自动执行功能:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
这会创建一个脚本标记来加载analytics.js文件。此脚本标记具有async属性,在此上下文中为async意味着这是非阻塞的(显然,动态创建脚本标记已经意味着加载将是非阻塞的: "There are six main techniques for downloading scripts without blocking: [...] Script DOM Element – Create a script element and set its src property to the script’s URL.") 。< / p>
因此,在引导代码运行后开始加载外部Google Analytics文件;由于异步加载(对于支持异步的浏览器),你无法确切地指出它何时加载,但实际上它并不重要,因为它不会干扰其他操作。
至于Tomeks评论,您不希望在DOM Ready上启动引导功能。它创建一个在时间报告中使用的日期对象,例如确定从页面加载到DOM准备所需的时间;如果你在加载代码之前等到DOM就绪,你就会破坏时间报告(这也是GA代码应该放在页面顶部的原因)。