Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Analytics跟踪代码中的双脚本标记_Javascript_Google Analytics_Tracking - Fatal编程技术网

Javascript Google Analytics跟踪代码中的双脚本标记

Javascript Google Analytics跟踪代码中的双脚本标记,javascript,google-analytics,tracking,Javascript,Google Analytics,Tracking,这更像是一个好奇的问题 谷歌指示添加分析跟踪代码,如下所示: <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js'

这更像是一个好奇的问题

谷歌指示添加分析跟踪代码,如下所示:

<script type="text/javascript">
   var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
   document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
   try{
      var pageTracker = _gat._getTracker("UA-xxxxxx-x");
      pageTracker._trackPageview();
   } catch(err) {}
</script>

var gaJsHost=((“https:==document.location.protocol)?”https://ssl." : "http://www.");
write(unescape(“%3Cscript src=”+gaJsHost+“google analytics.com/ga.js”type='text/javascript'%3E%3C/script%3E”);
试一试{
var pageTracker=_gat._getTracker(“UA-xxxxxx-x”);
页面跟踪器。_trackPageview();
}捕获(错误){}
我想知道这里的一些JS大师能告诉我为什么他们要把它分成两个脚本标签,而不是把它们都放在一个里面。我知道顶部可以放在页眉中,底部可以放在body标记之前,以确保页面在跟踪之前加载,但我想知道是否还有其他内容。任何知道这一点的人都可能知道如何将代码分成两个标记

我只是问,因为这是来自谷歌,正在被数百万的网站使用


谢谢

如果让我猜的话,我会说这是因为
文档行,其中动态包含另一个JS文件。我不知道他们为什么动态加载那个。我猜这与您是否运行https或http有关


如果是一个文件,我怀疑
ga.js
文件是否能及时加载以运行
pageTracker
代码
\u gat
将不存在,您将得到一个错误,而不是能够实际使用分析。

这是跨浏览器的一致性,它需要确保
document.write()
在下一个脚本块运行之前粘贴它生成的标记,因此结果如下所示:

<script src='http://www.google-analytics.com/ga.js' type='text/javascript'></script>
<script type="text/javascript">
   try{
      var pageTracker = _gat._getTracker("UA-xxxxxx-x");
      pageTracker._trackPageview();
   } catch(err) {}
</script>

试一试{
var pageTracker=_gat._getTracker(“UA-xxxxxx-x”);
页面跟踪器。_trackPageview();
}捕获(错误){}

如果它没有在两个脚本中执行,那么第二个脚本块中的
\u gat
将是未定义的,因为
ga.js
尚未加载…但是作为该脚本块之前的一个脚本块,页面在最后一个脚本块中执行代码之前会等待,从而使所有代码都能正常工作。基本上,浏览器按顺序执行脚本块,谷歌利用这一事实在需要加载脚本时加载脚本…这是在使用脚本之前。

有趣的想法。。。但是,标签的关闭和重新打开是否会产生足够的影响,使其成为现实?啊,有道理。。。一旦延迟消失,我会接受这个答案。谢谢。只是转达一下评论。有一个很酷的片段可以异步加载GA:很好,我不知道他们有,谢谢