- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试弄清楚跟踪/分析脚本是如何工作的。有一个优化版本的the Google Analytics code :
<script>
(function(window, document, variableName, scriptElement, firstScript) {
window['GoogleAnalyticsObject'] = variableName;
window[variableName] || (window[variableName] = function() {
(window[variableName].q = window[variableName].q || []).push(arguments);
});
window[variableName].l = +new Date;
scriptElement = document.createElement('script'),
firstScript = document.scripts[0];
scriptElement.src = 'https://127.0.0.1:3000/analytics.js';
firstScript.parentNode.insertBefore(scriptElement, firstScript)
}(window, document, 'ga'));
ga('create', 'UA-XXXX-Y');
ga('send', 'pageview');
</script>
加载自定义脚本时,我无法弄清楚 ga() 函数是如何工作的。我已经尝试了各种 IIFE 和构造函数,但没有收到“创建”和“发送”事件。
如何在服务器上查看这些事件?
更新
我设法抽象出队列的方式,现在想知道如何创建一个异步队列来将这些事件发送到服务器。有什么建议吗?
(function() {
var ga = function(a) {
return void 0 != a && -1 < (a.constructor + '').indexOf('String');
};
var sa = function(a) {
return a ? a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '') : '';
};
var gb = ga(window.GoogleAnalyticsObject) && sa(window.GoogleAnalyticsObject) || 'ga';
var Window = window;
var Document = document;
console.log(Window[gb].q);
})(window);
最佳答案
该函数只是将所有调用参数插入一个数组。随后,analytics.js
通过 window.GoogleAnalyticsObject
获取它。 Google 似乎没有提供 analytics.js
的非缩小版本,而是提供快速的美化和最终的搜索:
var gb = qa(window.GoogleAnalyticsObject) && sa(window.GoogleAnalyticsObject) || "ga"
qa
检查它是否是一个字符串,sa
函数只是稍微清除名称。
那么,他们还在哪些地方使用 gb
?分配只发生在其他地方:
N.N
函数:
N.N = function() {
"ga" != gb && J(49);
var a = O[gb];
if (!a || 42 != a.answer) {
N.L = a && a.l;
N.loaded = !0;
var b = O[gb] = N;
X("create", b, b.create);
X("remove", b, b.remove);
X("getByName", b, b.j, 5);
X("getAll", b, b.getAll, 6);
b = pc.prototype;
X("get", b, b.get, 7);
X("set", b, b.set, 4);
X("send", b, b.send);
b = Ya.prototype;
X("get", b, b.get);
X("set", b, b.set);
if (!Ud() && !Ba) {
a: {
for (var b = M.getElementsByTagName("script"), c = 0; c < b.length && 100 > c; c++) {
var d = b[c].src;
if (d && 0 == d.indexOf("https://www.google-analytics.com/analytics")) {
J(33);
b = !0;
break a
}
}
b = !1
}
b && (Ba = !0)
}
Ud() || Ba || !Ed(new Od) || (J(36), Ba = !0);
(O.gaplugins = O.gaplugins || {}).Linker = Dc;
b = Dc.prototype;
Yd.set("linker", Dc);
X("decorate", b, b.ca, 20);
X("autoLink", b, b.S, 25);
Yd.set("displayfeatures", fd);
Yd.set("adfeatures", fd);
a = a && a.q;
ka(a) ? Z.D.apply(N, a) : J(50)
}
};
分配发生于:
var a = O[gb]; //O is window
您在脚本中使用的 ga
函数很快就会被其他函数取代 (N
):
var b = O[gb] = N;
这是 N:
var N = function(a) {
J(1);
Z.D.apply(Z, [arguments])
};
队列在哪里使用?
a = a && a.q;
ka(a) ? Z.D.apply(N, a) : J(50)
Z.D
函数似乎正在执行您的参数。其中使用了更精简的功能。我建议你从这里继续寻找。
关于javascript - 使用构造函数/Universal Analytics 立即调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808060/
请帮助我了解如何在 Angular Universal 中使用服务器渲染。 我做了什么。我访问了 Angular Universal 官方网站。设置 Node.js。下载推荐项目 Angular 2
我正在研究使用 explicit universes 的可能性用于在 Coq 中构建固定的 Universe 层次结构。在构建它时使用常量 (2, 3, 4) 的尝试失败了:最后,所有组合仍然类型检查
我查看了 Universal Analytics,但没有找到问题的正确答案。 如何将这一行从旧的 Analytics 更新到新的 Universal Analytics? _gaq.push(["_s
我在 IIS 中部署 angular 通用应用程序时遇到问题。在 angular 通用中,创建了两个 dist 文件夹,一个是客户端的 dist,另一个是 dist-server,当我尝试托管时,我提
我使用@ng-toolkit/universal 作为我的服务器端渲染方法。一切正常,没有我的图像。我正在动态地获取它们。因此,当用户没有头像时,会显示一个占位符图像。因此我正在使用这个函数: ver
-编译应用程序后,我多次收到此错误 enter image description here 文本错误: 错误错误 at XMLHttpRequest.send (C:\Users\seva-
我正在Win10中使用VS2015开发通用应用程序。模拟器和android模拟器运行正常。 但是,当我启动Windows Phone Mobile模拟器时,该模拟器运行并显示“操作系统正在启动”,然后
我正在实现一个路由保护(CanActivate 接口(interface)),我需要在某些条件下重定向到未找到的页面。这可以通过以下语句来实现: if (isNode){ let res : Resp
我偶然发现了一个奇怪的情况,其中有 reflect.runtime.universe._进口原因reflect.runtime.universe.RuntimeClass推断它似乎在哪里Nothing
每当我在我的应用程序中加载图像时,我的 logcat 都会给我这条消息。 04-09 19:09:59.241: W/ImageLoader(276): Try to initialize Image
我正在尝试添加包但出现错误 meteor add universe:carousel => Errors while adding packages: 选择软件包版本时: error: Confli
所以我一直在尝试将我的应用程序转换为 angular universal,并且在大多数情况下都很好。但我之前读过一些“陷阱”:https://github.com/onespeed-articles/
我有一个指令,使文本输入到谷歌的地方自动完成输入,看起来像: import { Directive, AfterViewInit , Output, EventEmitter, NgZone, Ele
大约一年前,我们升级到了通用Analytics(分析),由于升级我们的站点搜索并没有在我们的Analytics(分析)帐户中显示关键字,甚至没有跟踪其使用次数。 作为营销人员,这是一个问题,因为我想知
我正准备使用 Angular Universal 为我的 Angular 7 应用程序设置 SSR。我遵循了官方文档( https://angular.io/guide/universal )。我到了
在应用程序关闭(暂停)后,我正在将一个不大于 10KB 的数据文件写入 RoamingFolder。该应用程序在开发桌面和 Surface 2 上运行,两者都登录到同一个 Microsoft 帐户。但
This question already has answers here: Page Navigation using MVVM in Store App (5个答案) 6年前关闭。 使用MVVM
我尝试安装iOS-Universal-Framework 。尝试运行instalation shell screept从这个存储库并始终获取消息: iOS Real Static Framework
这就是我目前初始化 chromedriver 的方式 System.setProperty("webdriver.chrome.driver", "C://chromedriver.exe"); 但是
您好,我在尝试运行 perl 脚本时遇到以下错误: pc:~/Phd/lenovo/programs/vep/scripts/variant_effect_predictor$ perl varian
我是一名优秀的程序员,十分优秀!