2017-07-06 50 views
0

我的任务是对网站进行硬编码增强型电子商务跟踪(不使用任何标签管理)。任务是简单地包括'添加到篮子'。添加到购物篮电子商务功能不使用GTM。以下是否会按预期行事?

它的预期,我定义的数据字段的一些变量,而不是字符串。

因此,鉴于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. 
 
}

+0

对不起格式不好...我真的很努力让它显得整洁。 – 72usty

回答

0

您的片段上述回传失误的一切,当我在网页上运行它们,所以我会让他们目前没有刺工作。

确认的最简单方法是在你的网页浏览器打开网页,然后尝试在JavaScript控制台运行片段(例如CMD + ALT +Ĵ在Chrome的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,但是请注意,如果页面中存在元素,则会引发异常。

注意的另外一点:它看起来像一堆在你的代码块的报价已被取代智能引号,如果你在你的实际代码使用它们,将无法正常工作(例如代替') 。如果你在Mac上工作,我会推荐turning off smart quotes

深入到这个问题可能是过于具体是堆栈溢出是有用的,但是如果你有可能是张贴作为一个单独的问题有用的一个领域任何特别的困难。

相关问题