javascript - 将 Google Analytics 代码放入 JS 文件中
问题描述
我们将 GA 代码添加到一个 JS 文件并从那里调用它。这是我们在<head>
标签中得到的:
<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
对网络进行异步调用以开始下载脚本,但是您编写的代码会立即执行,甚至在 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 });
})
希望这在概念上也很清楚。
推荐阅读
- firebase - 如何使用正确的参数调用 gapi.client.firebase.projects.iosApp.create?
- java - java.lang.ClassCastException:java.io.ObjectStreamClass 无法转换为 [MyClass]
- javascript - 为什么我需要 setTimeout 来更新 React 组件中的状态
- spring-boot - 如何根据输入字段将json数据流发送到kafka中的多个主题
- python - 使用 pyinstaller 后 Tkinter 更新标签
- r - 如何在r中的单行中获取条件的结果
- c# - 在 DLL 'CIMWin32.dll' 中找不到名为“Reset”的入口点
- c++ - 更少的恒定时间迭代需要更多时间 - c++ 编译器依赖性?
- javascript - 每次我调用函数时防止声明空数组
- elasticsearch - Elasticsearch:仅搜索单词形式