【问题标题】:Google Tag Manager trigger using dataLayer wont fire使用 dataLayer 的 Google Tag Manager 触发器不会触发
【发布时间】:2016-09-13 11:51:35
【问题描述】:

按钮:

<button id="btnBuy" onclick="SendData();"

JavaScript 函数:

<script>
// Measure a view of product details. This example assumes the detail view occurs on pageload,
// and also tracks a standard pageview of the details page.
var dataLayer = [];

dataLayer.push( {
  'ecommerce': {
    'detail': {
      'actionField': {'list': 'Apparel Gallery'},    // 'detail' actions have an optional list property.
      'products': [{
      'name': '@GetString("Ecom:Product.Name")',         // Name or ID is required.
      'id': '@GetValue("Ecom:Product.Number")',
      'price': '@GetValue("Ecom:Product.ActualPriceWithVAT")',
      'brand': '@GetString("Ecom:Manufacturer.Name")',
      'category': 'PRODUCT_CATEGORY'
       }]
     }
   }
});

function SendData()
{
    var purchaseData = 
    dataLayer.push( {
        'event': 'addToCart',
        'ecommerce': {
            'currencyCode': 'SEK',
            'add': {                                // 'add' actionFieldObject measures.
                'products': [{                        //  adding a product to a shopping cart.
                    'name': '@GetString("Ecom:Product.Name")',
                    'id': '@GetValue("Ecom:Product.Number")',
                    'price': '@GetValue("Ecom:Product.ActualPriceWithVAT")',
                    'brand': '@GetString("Ecom:Manufacturer.Name")',
                    'category': 'Apparel',
                    'variant': $j('input[name=radioDim1]:checked').val(),
                    'quantity': $j( '#QuantitySelector option:selected' ).val(),
                    'size': $j( 'input[name=radioDim2]:checked' ).closest( 'label' ).text()
                }]
            }
        }
    } );

    return purchaseData;

}

</script>

标签信息: 追踪:事件 分类: 加入购物车 行动:{{事件}} 标签:{{页面路径}}

触发器: 事件等于 addToCart

我在 Chrome 中使用预览模式,即使它注册了我的点击事件,它也没有说触发了触发器。

【问题讨论】:

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


    【解决方案1】:

    假设你上面的代码在GTM容器sn-p之后,你在第一行所做的就是重新定义dataLayer,即。

    var dataLayer = [];
    

    这会清除 GTM 所知道的数据层,并可能破坏您的标签。

    您应该像这样以更安全的方式定义 dataLayer,例如:

    var dataLayer = dataLayer || [];
    

    如果它已经存在就不会抹去它。

    【讨论】:

    • 对我来说这没有任何意义。我必须将变量声明为空数组,然后将对象推入该数组。不就是这样做的吗?当有人将产品添加到购物车时调用的 SendData 函数怎么样。是否应该返回购买变量,或者只需将另一个对象添加到数组中就足够了?
    【解决方案2】:

    在左边您可以看到实际触发的事件名称,因此肯定会触发“addToCart”。

    你应该截取“标签”标签,然后点击你想观察的标签,然后会有关于为什么或为什么不被触发的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多