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



当我尝试在 React 组件中初始化时,Matomo 跟踪失败。但是如果我在索引中初始化它,效果很好.html。我想在组件中的一些事件后初始化 matomo,但我收到此错误:

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跟踪,这是代码:

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 发生在组件的 DidMount 中。我将不胜感激任何想法。

Matomo 跟踪代码需要_paq变量成为 matomo 的全局变量.js才能正常工作。如果跟踪代码放在函数内,则_paq仅存在于该函数中。

要解决此问题,您可以在var _paq = window._paq || [];行下方添加window._paq=_paq

最新更新