事件在数据层中的位置 - 这有关系吗?

时间:2015-02-03 10:15:07

标签: javascript google-tag-manager google-datalayer

我有一段GTM代码,其中事件有时放在对象的顶部,有时放在底部。现在的问题是,是否有任何区别(比如从前一个事件中发送数据),哪个是处理它的正确方法?

dataLayer.push({
    'event': 'addToCart',
    'ecommerce': {
        'add': {
            'actionField': { 'list': 'Bestsellers' },
            'products': [{
                'name': 'Product 1',
                'id': 1,
                'position': 1,
                'quantity': 1
            }]
        }
    }
});

或者

dataLayer.push({
    'ecommerce': {
        'add': {
            'actionField': { 'list': 'Bestsellers' },
            'products': [{
                'name': 'Product 1',
                'id': 1,
                'position': 1,
                'quantity': 1
            }]
        }   
    },
    'event': 'addToCart'
});

请注意,这只是一个例子。如果将产品添加到购物车,则事件始终位于dataLayer的顶部,但是在展示的情况下,事件始终位于底部(此部分代码基于互联网上的教程,其中事件放在那里)。乍一看,GA统计数据似乎注册得很好。然而,在GTM + GA组合的情况下,有时很难发现某些东西是否工作不正确(而不是发现它是否有效),因此问题就出现了。

1 个答案:

答案 0 :(得分:1)

您正在将javascript object推送到dataLayer。在对象内部,所有属性(电子商务事件实际上是对象的属性)都是根据它们的名称编制索引的,而不是像数组中那样的数字,它们是进一步精确地使用他们的名字。 Javascript中的对象不保证其属性中的任何顺序。总而言之,在对象中定义属性的顺序并不重要,因为即使在将它推送到dataLayer的时候它们也会进一步“无序”#34;