首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用了_paq.push(),但在加载matomo.js文件之前未初始化Matomo跟踪器

使用了_paq.push(),但在加载matomo.js文件之前未初始化Matomo跟踪器
EN

Stack Overflow用户
提问于 2020-07-06 22:29:31
回答 1查看 1.3K关注 0票数 1

当我尝试在React组件中初始化时,Matomo跟踪失败。但是如果我在index.html中初始化它,效果会很好。我想在组件中发生一些事件后初始化matomo,但是我得到了这个错误:

代码语言:javascript
运行
复制
matomo.js:182 _paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.

我想从后端加载Matomo_url和Site_id,然后初始化matomo跟踪,代码如下:

代码语言:javascript
运行
复制
var _paq = window._paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
  var u = "//{$MATOMO_URL}/";
  _paq.push(["setTrackerUrl", u + "matomo.php"]);
  _paq.push(["setSiteId", { $IDSITE }]);
  var d = document,
    g = d.createElement("script"),
    s = d.getElementsByTagName("script")[0];
  g.type = "text/javascript";
  g.async = true;
  g.defer = true;
  g.src = u + "matomo.js";
  s.parentNode.insertBefore(g, s);
})();

初始化matomo发生在组件的componentDidMount中。如果你有任何想法,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-07-07 18:25:13

Matomo跟踪代码需要_paq变量成为matomo.js正常工作的全局变量。如果跟踪代码放在一个函数中,那么_paq只存在于该函数中。

要解决这个问题,可以在var _paq = window._paq || [];行下面添加window._paq=_paq

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62758236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档