提问人:NeilD 提问时间:7/16/2010 最后编辑:Alex WNeilD 更新时间:4/9/2018 访问量:27276
使用来自外部 JS 文件的 Google Analytics(分析)异步代码
Using Google Analytics asynchronous code from external JS file
问:
我正在尝试将 Google Analytics(分析)跟踪代码的异步版本添加到网站。
我想将 JavaScript 保存在一个单独的文件中,然后从那里调用它。
这是我目前在 .js 文件中的内容:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function loadtracking() {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_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);
})();
}
addLoadEvent(loadtracking);
这是我在母版页的标签中得到的内容:<head>
<script type="text/javascript" src="js/google-analytics.js" ></script>
但是,显然存在一个问题,因为几天后,我没有得到统计数据!
有什么想法我需要改变吗?
谢谢 尼尔
编辑:好的...在下面的一些反馈之后,我将添加我的 .js 文件的新当前内容。我会保持更新,以便如果/当这个问题得到解决时,它有望帮助其他试图做类似事情的人。
var _gaq = _gaq || [];
function loadtracking() {
window._gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
window._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);
})();
}
loadtracking();
答:
您完全错过了异步跟踪代码的重点。不要将其放在外部文件中,因为这与包含旧的同步 GA 完全一样。
最重要的是,不要将跟踪代码推迟到,因为它可能为时已晚。window.onload
如果使用异步 GA,只需将其放在文档顶部的内联脚本标记中即可。这也是Google Analytics网站上的建议。
将异步代码段插入
<head>
部分的底部 页面,在任何其他脚本之后 页面或模板可能会使用。
评论
变量定义位于函数内部。这意味着它在该函数内部的本地范围,不会全局存在。Google Analytics 依赖于全局变量 。如果要将其保留在这样的函数中,请将其引用为 。var _gaq
_gaq
window._gaq
评论
老实说,我没有通读所有这些帖子,因为它们很旧。但是,我最近需要将 Gtag(用于分析跟踪的谷歌标签管理器)添加到一个旧网站,该网站是一个 1000 个静态 HTML 文件,并且(幸运的是)html 文件有一个用于 spry 菜单栏的包含 js 文件,就像我说的非常旧的网站!出于我的目的,我不担心性能,而是测量流量,以便我们可以迁移它。您的情况可能有所不同,但以下代码适用于 Gtag 的外部 js 包含。
我使用此文件加载了下面的代码,因为上面的代码适用于旧版 ga.js
//Added Google Anyltics Tag Container Tracking - included here to min rebuilding DOM
function loadGoogleAnalytics(){
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = 'https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-X';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
}
loadGoogleAnalytics(); //Create the script
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXXX-1');
//Confirmed with Google tag Assistant
评论