У нас есть расширение, написанное на Typescript, работающее с Chrome, Firefox и Edge, к которому мы добавляем Google Analytics.Мы сделали это, создав простой файл для загрузки Google Analytics:
import { environment } from "../environment";
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date().getTime(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
ga('create', environment.googleAnalyticsTrackingCode, 'auto');
ga('set', 'checkProtocolTask', function () { }); // Removes failing protocol check. @see: http://stackoverflow.com/a/22152353/1958200
ga('require', 'displayfeatures');
Затем мы используем Webpack для создания этого и ссылаемся на файл в имеющемся у нас popup.html.Мы добавили ссылку на пакет NPM:
"@ types / google.analytics": "^ 0.0.39"
Из всплывающего файла js мызатем мы можем сделать вызов функции ga следующим образом:
ga('send', 'pageview', url);
Мы также изменили манифест, включив в него:
"content_security_policy": "script-src 'self'https://www.google -analytics.com ; object-src' self '"
В Chrome все работает без проблем, и мы видим, что просмотры страниц зарегистрированы в Google Analaytics, но в Firefoxи Edge нет запросов к Google Analytics, но нет и каких-либо ошибок, он попадает в функцию ga, но ничего не происходит.
Есть ли что-то еще, что мы должны были бы сделать в Firefox и Edge, чтобы сделать эторабота?
Структура нашего приложения такова, что скрипт содержимого создает на странице iframe и загружает popup.html в качестве источника этого iframe.Есть ли ограничение в Firefox / Edge, но не в Chrome, которое могло бы повлиять на Google Analytics для расширения, структурированного таким образом?
Сравнение сетевых запросов, Chrome слева, Firefox справа:
Я также изменил, чтобы он регистрировал просмотр страницы из фона.Опять же, это нормально работает в Chrome, но не работает в Edge / Firefox, но без ошибок.