簡體   English   中英

使用來自外部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();

變量定義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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM