添加到购物篮电子商务功能,而不使用GTM。以下是否符合预期?

时间:2017-07-06 20:49:10

标签: javascript google-analytics

我的任务是对网站进行硬编码增强型电子商务跟踪(不使用任何代码管理)。任务是简单包括“添加到购物篮”。

我期望用一些变量定义数据字段,而不是字符串。

因此,给定this web page,以下脚本会提取我期待的相关数据吗? (SKU,产品名称,价格和数量选择)



// Called when a product is added to a shopping cart. 
function addToCart(product) {    
  ga('ec:addProduct', {       
     'id': document.getElementsByClassName(‘sku’).text,        
     'name’:  document.getElementsByClassName('pdHero-name h4’).text,       
     'price’:  document.getElementById('salePrice').text,       
     'quantity’:  document.getElementByClassName(‘oakley-custom-selectInner’).text     
     });    
  ga('ec:setAction', 'add');    
  ga('send', 'event', 'UX', 'click', 'add to cart');     // Send data using an event.  
}




1 个答案:

答案 0 :(得分:0)

当我在页面上运行它们时,上面的所有片段都会返回错误,因此我会尝试它们目前无法正常工作。

最简单的确认方法是在网络浏览器中打开网页,然后尝试在javascript控制台中运行代码段(例如 cmd + alt + j 在Chrome for Mac中。

如果可以的话,通过idname抓取几乎肯定会更好,因为这些因为无聊的原因而不太可能改变 - class主要用于样式等等它很可能在页面样式发生变化时发生变化。

类名和名称引用html元素的不同部分:

<div class="bold" name="first" id="firstId">here is some value</div>
<div class="bold" name="second" id="secondId">here is a second value</div>
  • getElementsByClassName('bold')检查class=,并在列表中返回上述div的两个
  • getElementsByName('first')检查name=,并且只返回第一个(但在列表中,因为理论上 可能多个具有该名称的元素)
  • getElementById('secondId')检查id=,并仅返回第二个。

对于前两个函数,在访问任何其他属性之前,您始终需要访问第一个元素,例如: getElementsByName('first')[0].innerText,但请注意,如果页面中的 no 元素具有该名称,则会引发异常。

另一点需要注意的是:看起来你的代码块中的一堆引号已经被智能引号所取代,如果你在实际代码中使用它们将不起作用(例如或{{ 1}}而不是)。如果你在Mac上工作,我会完全推荐turning off smart quotes

深入研究这个问题可能过于具体,无法对Stack Overflow有用,但如果您对某个字段有任何特殊困难,可能会将其作为单独的问题发布。