我观察了 dataLayer
数组,但没有看到 push
发生任何变化。实际上根本没有自定义方法。 GTM如何观察数组的变化?据我所知,对 Array
的更改不会引发任何事件,不是吗?
编辑:
我做了更多研究,发现 Google 的用于与 dataLayer
交互的库:https://github.com/google/data-layer-helper#listening-for-messages
我会看一下代码,如果我了解内部工作原理,甚至可能会回答我自己的问题。
最佳答案
GTM 使用的模式是发布/订阅者
代码中的一些细节有助于识别它:https://github.com/google/data-layer-helper/blob/master/src/helper/helper.js 的第 76 行和 181 行
最后是第 114 行和第 119 行
// Add listener for future state changes.
var oldPush = dataLayer.push;
var that = this;
dataLayer.push = function() {
var states = [].slice.call(arguments, 0);
var result = oldPush.apply(dataLayer, states);
that.processStates_(states);
return result;
};
查看 states
变量以及它如何传递给 this.processStates_()
关于javascript - Google 跟踪代码管理器使用什么模式来观察 `dataLayer` 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906754/