【问题标题】:Google Analytics click events tracking in chrome Extension Content script (Shadow DOM)chrome 扩展内容脚本 (Shadow DOM) 中的 Google Analytics 点击事件跟踪
【发布时间】:2020-02-04 21:40:36
【问题描述】:

我正在构建一个 Chrome 扩展程序,其用户界面通过内容脚本注入到页面 DOM 中。

我已将代码注入到 Shadow Root 中以防止 CSS 溢出 - 实际上一切都开始变得非常好:-)

但我在使用 Google 分析方面有点吃力。我想跟踪内容脚本中按钮上的不同点击事件(+ 在设置页面上),以更好地了解用户如何浏览扩展程序(+ 当然是页面访问)。

我在从 Google 向后台脚本传递消息的文档中苦苦挣扎,并且无法找到一些现实生活中的示例。

我不确定这将如何工作 - 以及我应该首先将什么传递给后台脚本? .内容脚本会在每次点击时向后台发送消息,还是只会传递一个包含事件信息的对象以从后台脚本跟踪?

我有点迷失了:我对这样的内容脚本和背景之间的消息传递的理解相当有限......

到目前为止,我有 2 个“正在进行的”代码 sn-ps 可以使用...

到目前为止的后台脚本代码:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXXX']);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = 'https://ssl.google-analytics.com/u/ga_debug.js';     // ----> 'https://ssl.google-analytics.com/ga.js'
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

// here I receive the message from the content script page
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {

      //track event - create
      if(request.action == "analytics_add_item"){
          _gaq.push(['_trackEvent',
              request.action,
              request.item_name.toLowerCase(),
              request.item_stat,
              request.item_number
          ]);
      }

});

内容脚本:

function trackButtonClick(e) {
 console.log('action: "analytics_add_item"', e.target.name);
    chrome.runtime.sendMessage({analytics_add_item: e.target.name});
    _gaq.push(['_trackEvent', e.target.id, 'clicked']);
}

// let lotsUnitsSlider already defined elsewhere in code (this is a toggle-button)
lotsUnitsSlider.name = lotsUnitsSlider;
lotsUnitsSlider.addEventListener('click', trackButtonClick);

任何人都可以帮助我吗?谢谢 :-)

【问题讨论】:

    标签: events google-chrome-extension google-analytics content-script message-passing


    【解决方案1】:

    您的内容脚本正在发送一个具有analytics_add_item 属性的对象,但侦听器检查了action 属性并想要一堆您不发送的其他属性。

    将缺少的属性添加到消息对象中:

    chrome.runtime.sendMessage({
      action: 'analytics_add_item',
      item_name: e.target.name,
      item_stat: 'foo',
      item_number: 'bar',
    });
    

    附:您可以使用 devtools 调试器实际查看发生了什么,通过在侦听器中设置断点来发送和接收什么(后台脚本 devtools 是 opened through chrome://extensions page)。

    【讨论】:

    • 感谢您的回复 wOxxOm!我想我在这里有点迷失 - 我缺少对谷歌分析和一般消息传递的一些基本了解。如果我使用分析代码查看有关事件跟踪的一般信息,我会得到如下信息: Category (Required) Action (Required) 。标签(可选)值(可选)所以 - 我在按钮上有一个点击事件。所以:类别:contentscript - 操作:点击,标签:lotsUnitsSlider ?
    • 我真的迷路了! Google 将事件跟踪描述为:onclick=ga(‘send’, ‘event’, [eventCategory], [eventAction], [eventLabel], [eventValue]);类别(必填)、操作(必填)、标签(可选)、值(可选)。但是我会向后台发送什么?
    • 我回答了关于消息传递的部分,我相信我的回答已经足够清楚了。我对分析一无所知,所以无法回答。您可能想问一个单独的问题。
    • 感谢 wOxxOm - 感谢您的时间和帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    相关资源
    最近更新 更多