Bet*_*ega 2 javascript arrays key-value-observing observer-pattern google-tag-manager
我观察了dataLayer数组,但没有看到push. 实际上根本没有自定义方法。GTM 如何观察数组的变化?据我所知,对 an 的更改Array不会引发任何事件,是吗?
我做了一些更多的研究,发现谷歌的库与以下交互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;
};
Run Code Online (Sandbox Code Playgroud)
看看states变量以及它是如何传递给this.processStates_()
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |