У меня стандартный проект React, и я использую Google Tag Manager для загрузки аналитики на страницу.У меня есть менеджер тегов Google в главе index.html.У меня есть некоторый код для получения clientId из объекта window.ga, а затем заполнить его в поле в моем состоянии на одном из моих компонентов под названием "gaClientId".У меня есть метод, который получает clientId и вызывается в componentDidMount ().Это работает, как и ожидалось, в Chrome и IE, но не в Firefox по какой-то странной причине.Не совсем уверен, в чем проблема.Я проверил, чтобы убедиться, что firefox не блокирует трекер, и заметил в консоли, что если я console.log (window.ga), то получаю неопределенное сообщение перед загрузкой Google Tag Manager.Не знал, в этом ли проблема.Вот мой метод:
getGAClientId() {
try {
const tracker = ga.getAll()[0];
let clientId = tracker.get("clientId");
this.setState({ gaClientId: clientId });
} catch (e) {
return null;
}
}
и вот мое состояние в компоненте:
this.state = {
firstname: '',
lastname: '',
email: '',
gaClientId: ''
};
Это значение устанавливается в скрытой формеполе, подобное этому:
<input type="hidden" value="this.state.gaClientId" name="gaClientId" />
Вот глава моего index.html, чтобы показать вам:
<head>
<!-- Google Tag Manager -->
<script>
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
"gtm.start": new Date().getTime(),
event: "gtm.js"
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != "dataLayer" ? "&l=" + l : "";
j.async = true;
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, "script", "dataLayer", "GTM-xxxxxxx");
</script>
<!-- End Google Tag Manager -->
</head>
Любая помощь в этом приветствуется.Спасибо!