javascript - 使用 dataLayer 的 Google 跟踪代码管理器触发器不会触发

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

按钮:

<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 中使用预览模式,即使它注册了我的点击事件,它也没有说触发了触发器。

Tag manager Variables

Tag Manager Data Layer

最佳答案

假设您上面的代码位于 GTM 容器片段之后,您在第一行所做的是重新定义数据层,即。

var dataLayer = [];

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

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

var dataLayer = dataLayer || [];

如果它已经存在,则不会将其清除。

关于javascript - 使用 dataLayer 的 Google 跟踪代码管理器触发器不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469375/

相关文章:

javascript - 某些页面上的 ga ("send"、 "pageview") 中的 Google Analytics 错误

google-analytics - 如何跟踪我的 Greasemonkey 脚本有多少次自动升级下载?

javascript - Google 跟踪代码管理器中的 JavaScript Try-Catch 错误

javascript - 有什么办法可以在Javascript中访问外部作用域中的局部作用域变量?

javascript - 将监听器添加到 firebase 生成的 key 内的子级?

google-analytics - BigQuery 数据与 Google Analytics

javascript - 谷歌标签管理器 : Is it possible to put CUSTOM HTML code in head tag via GTM?

google-analytics - 谷歌分析,内部链接分析?

javascript - 使用纯 JavaScript,是否有一种简单的方法可以将事件监听器附加到类?

javascript - 映射数组键值