Javascript 我可以在Google标签管理器中查看数据层变量的更改吗?
我正在编写一个Javascript函数,它将成为Google tag Manager中的一个标记 它是装在一个水疗中心的,我几乎无法控制 每当用户单击时,我使用GTM功能将一些数据推送到数据层,例如:Javascript 我可以在Google标签管理器中查看数据层变量的更改吗?,javascript,google-tag-manager,google-datalayer,Javascript,Google Tag Manager,Google Datalayer,我正在编写一个Javascript函数,它将成为Google tag Manager中的一个标记 它是装在一个水疗中心的,我几乎无法控制 每当用户单击时,我使用GTM功能将一些数据推送到数据层,例如: var someEventIsTriggered = function(e) { var target = $('input#watched'); // Trigger a generic "gtm.click" event on every click
var someEventIsTriggered = function(e) {
var target = $('input#watched');
// Trigger a generic "gtm.click" event on every click
dataLayer.push({
"event": "gtm.customEvent",
"gtm.customWatchedVariable": target.val()
});
};
每次触发时,它都会将新事件推送到数据层,并更新gtm.customWatchedVariable的值。我现在要检查的是当前的gtm.customWatchedVariable
是否与上一个gtm.customWatchedVariable
不同,然后在gtm中触发一个触发器
如何执行此操作?此JS正在检查datalayer对象中的last
gtm.customWatchedVariable
变量是否不同:
var someEventIsTriggered = function(e) {
var target = $('input#watched');
dataLayer.push({
"event": "gtm.customEvent",
"gtm.customWatchedVariable": target.val()
});
var customWatcherVar = dataLayer.filter(function(e){ return typeof(e["gtm.customWatchedVariable"]) != 'undefined';});
var prevDatalayer = customWatcherVar[customWatcherVar.length-2];
var newDatalayer = customWatcherVar[customWatcherVar.length-1];
var prevVal = null;
var newVal = null;
if (prevDatalayer!=null)
{
prevVal = prevDatalayer["gtm.customWatchedVariable"];
}
if (newDatalayer!=null)
{
newVal = newDatalayer["gtm.customWatchedVariable"];
}
if (prevVal != newVal)
{
// Push another datalayer, because gtm.customWatchedVariable changed
}
};
感谢@victor leontyev为我指出答案 我不知道你可以像对待其他数组一样对待数据层对象。现在我的代码如下所示:
var someEventIsTriggered = function(e) {
var target = $('input#watched');
var lastEvent = dataLayer
.filter(function (e) { return e.event === 'gtm.customEvent'; })
.pop();
var lastValue = lastEvent instanceof Object
? lastEvent["gtm.customWatchedVariable"]
: false;
// Trigger a generic "gtm.click" event on every click
dataLayer.push({
"event": "gtm.customEvent",
"gtm.customWatchedVariable": target.val()
});
if (lastValue !== target.val()) {
// Do the thing.
}
};
谢谢 谢谢!我不知道你可以把数据层当作一个普通的Javascript数组。更优雅的方法是在你开始新的元素之前,只取最后一个元素。如果它对你有效,你能接受我的答案吗