[英]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();
變量定義var _gaq
在函數內部。 這意味着它在該函數內局部作用域並且不會全局存在。 Google Analytics取決於全局變量_gaq
。 如果你想將它保存在這樣的函數中,請將其引用為window._gaq
。
你完全忽略了異步跟蹤代碼的重點。 不要把它放在外部文件中,因為這與包含舊的同步GA完全一樣。
最重要的是,不要將跟蹤代碼推遲到window.onload
因為它可能會觸發太晚。
如果您使用異步GA, 只需將其放在內聯腳本標記中的文檔頂部 。 這也是Google Analytics網站上的推薦 。
在頁面或模板可能使用的任何其他腳本之后,將異步代碼段插入頁面
<head>
部分的底部 。
老實說,我沒有讀過所有這些帖子,因為它們已經很老了。 但是我最近需要將Gtag(谷歌標簽管理器用於分析跟蹤)添加到一個舊網站,這是一個1000靜態HTML文件和(LUCKILY)一個html文件有一個包含js文件的spry菜單欄,就像我說很舊的網站! 出於我的目的,我並不擔心性能,而是測量流量,以便我們可以遷移它。 您的情況可能會有所不同,但以下代碼適用於包含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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.