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

如何使用JS刮取页面并将变量推入GTM数据层

  •  0
  • Klikerko  · 技术社区  · 8 年前

    我试图通过使用Javascript抓取页面来填充Google数据层数组。控制台确认,下面的代码成功地遍历了HTML中列出的所有项目。我正在努力编写正确的数据层。push函数,它将推送所有三个项目,而不是下面的代码示例中的一个项目。

    有人能帮我做这个吗?

    注意:您可以忽略“ID”和“revenue”。

    $("#theList li").each(function() {
      
      var $this=$(this);
      scrapeProductName=$this.find('.name').text();
      scrapeProductPrice=$this.find('.price').text();
      scrapeProductQuantity=$this.find('.quantity').text();
      
      console.log('product: ' +  scrapeProductName + '; price: ' + scrapeProductPrice + '; quantity: ' + scrapeProductQuantity);
      
    });
    
    dataLayer = [];
    
    dataLayer.push( {
      'ecommerce': {
        'purchase': {
          'actionField': {
            'id': '11111111', 'revenue': '999.99'
          },
          'products': [
          
          // start product list
          
          {
            'name': scrapeProductName,
            'price': scrapeProductPrice,
            'quantity': scrapeProductQuantity
          }
          
          // end product list
          
          ]
        }
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    
    <ul id="theList">
      <li>
        <div class="name">banana</div>
        <div class="price">1.00</div>
        <div class="quantity">3</div>
      </li>
      <li>
        <div class="name">apple</div>
        <div class="price">2.00</div>
        <div class="quantity">5</div>
      </li>
      <li>
        <div class="name">pear</div>
        <div class="price">3.50</div>
        <div class="quantity">1</div>
      </li>
    </ul>
    1 回复  |  直到 8 年前
        1
  •  2
  •   James    8 年前

    在每个函数中分别构建产品阵列,然后将其作为单个实体附加到数据层中。推送呼叫:

    var products = [];
    
    $("#theList li").each(function() {
    
      var $this=$(this);
      scrapeProductName=$this.find('.name').text();
      scrapeProductPrice=$this.find('.price').text();
      scrapeProductQuantity=$this.find('.quantity').text();
    
      console.log('product: ' +  scrapeProductName + '; price: ' + scrapeProductPrice + '; quantity: ' + scrapeProductQuantity);
    
      products.push({name: scrapeProductName, price: scrapeProductPrice, quantity: scrapeProductQuantity});
    
    });
    
    dataLayer = [];
    
    dataLayer.push( {
      'ecommerce': {
        'purchase': {
          'actionField': {
            'id': '11111111', 'revenue': '999.99'
          },
          'products': products
        }
      }
    });