代码之家  ›  专栏  ›  技术社区  ›  RRTW

在page act之前的GTM火灾事件,如何处理?

  •  0
  • RRTW  · 技术社区  · 7 年前

    我有一个简单的页面,它位于URL中 https://www.myshop.com/user/quickact ,html看起来像:

    <input id="pid" />Keyin Product ID
    <input id="count" />Keyin product count
    <a id="addList" href="javascript:void(0);" class="buttonAction">Add to List</a>
    <!--some external js file handle click event for this link-->
    

    当用户单击超文本[添加到列表]时,我的页面将:

    1. 获取pid/count值,放入javascript数组。
    2. 用“”重置pid,用1重置计数。

    我现在在GTM做的事情是:

    1. 当PageURL包含“用户/快速行动”时
    2. 用户点击了ID为“addList”的链接
    3. 获取pid/计数值,并通过GTM标签将其发送到GA。

    下面是我在GTM的自定义变量中读取它们的方式

    function()
    {
      var pid=document.getElementById('pid').value;
      var count=document.getElementById('count').value;
      return pid+','+count;
    }
    

    我的问题是,GA事件确实启动了,但价值。。。我的自定义变量总是返回'1'。

    这意味着我的GTM标签在佩奇的行动后被解雇 ,因此它只能读取重置值,而不能读取用户输入的实际值。

    有人能提出解决这个问题的建议吗?

    0 回复  |  直到 7 年前
        1
  •  0
  •   kgrg    7 年前

    我不确定是否有一种解决方案可以控制多个事件的执行顺序,但一种解决方法是为GTM提供所需的数据,并使用相同的功能获取值并重置它们。这假设您可以控制此代码。

    你可以这样做:

    function yourFunctionForButtonClick() {
    
      //Your code to get pid/count value, put into a javascript array.
    
      //new code to provide data to GTM
      dataLayer.push({
        event: 'newPidProvided',
        pidcountvalue: pid + ',' + count
      }); 
    
      //Your code to reset pid with '', reset count with 1'.
    
    }
    

    在这种情况下,您需要设置GTM触发器来监听newPidProvided事件,而不是单击,同时仍要检查URL中是否存在“用户/快速行为”。(如果没有其他标签或触发器在其他页面的GTM中使用pid+计数,也可以在函数中完成。)您还必须使用数据层变量,而不是自定义JavaScript类型。