把Google Analytics代码放入JS文件中

4
我们将GA代码添加到JS文件中,并从那里调用它。以下是我们在标签中的代码:
<script src="/public/tail/tail.js"></script>

以下是我们目前在 .js 文件中的内容:

// Global site tag (gtag.js) - Google Analytics 
dynamicLoadJs('https://www.googletagmanager.com/gtag/js?id=UA-74793602-1','async');
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-849140015');
gtag('config', 'UA-74793602-1', { 'anonymize_ip': true });

然而,很明显存在问题,因为几天后,我没有收到任何统计数据!

有什么建议需要我更改吗?


“dynamicLoadJs”和“async”让我觉得你可能在文件加载之前调用了“gtag”。你在控制台看到错误吗? - Tyler Roper
1个回答

3

dynamicLoadJs 函数异步调用网络以开始下载脚本,但您编写的代码会在 JS 文件完成下载之前立即执行。

您需要一个“回调函数”,在脚本加载和执行后触发。

因此,您应该有效地拥有以下代码:

/*This function will load script and call the callback once the script has loaded*/
function loadScriptAsync(scriptSrc, callback) {
    if (typeof callback !== 'function') {
        throw new Error('Not a valid callback for async script load');
    }
    var script = document.createElement('script');
    script.onload = callback;
    script.src = scriptSrc;
    document.head.appendChild(script);
}

/* This is the part where you call the above defined function and "call back" your code which gets executed after the script has loaded */
loadScriptAsync('https://www.googletagmanager.com/gtag/js?id=UA-74793602-1', function(){
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', 'AW-849140015');
    gtag('config', 'UA-74793602-1', { 'anonymize_ip': true });
})

希望这个概念在技术上也能清晰易懂。

非常感谢,我非常感激你的帮助! - George
@George 嗨,它实现了吗?迫不及待想知道。 :) 你可以在 Google Analytics 的“实时”部分查看用户的实时点击量。 - Sankalp Sharma
@MrSponge,我该如何将其设置为已接受的答案?有按钮或我错过了什么吗? - George

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接