我安装了以下chrome插件 uBlock Origin,我在角度应用程序中使用angular-google-analytics。 adblocker阻止了angular-google-analytics.js脚本。 由于我正在获得喷油器模块化错误。
要解决这个问题,我已按以下方式编写 -
try {
// Check if the below module is available
angular.module('angular-google-analytics');
angular.module('myApp').requires.push('angular-google-analytics');
angular.module('myApp').config(function(AnalyticsProvider) {
AnalyticsProvider.setAccount('API', 'KEY');
AnalyticsProvider.trackPages(!0),
AnalyticsProvider.setDomainName("www.test.com"),
AnalyticsProvider.useAnalytics(!0),
AnalyticsProvider.useECommerce(!0, !0)
AnalyticsProvider.setCurrency('INR');
}).run(function(Analytics) {});
console.log("GA available");
} catch(e) {
// statements
console.error("GA not available"+ e);
}
并在其他控制器/服务中使用依赖
if ($injector.has('angular-google-analytics'))
var Analytics = $injector.get('angular-google-analytics');
许多控制器都存在这种依赖关系。
所以我的问题是,这是最好的方法吗?或者有更好的方法可以适用吗?
答案 0 :(得分:0)
您可以分享Google Analytics代码吗?
你已经尝试过注射器了,没关系,但是Adbloquer有时会停止JS文件但不会执行GA,在这种情况下,如果正确打印注射器,你就不会受到期货错误的保护。然后,当它尝试执行“创建”或启动新的“页面视图”时,代码将找不到对象并破坏整个Javascript(Angular在JS上工作)。
您可以尝试通过GA代码尝试捕获,而不是通过注射器
<script>
try {
<!-- Google Analytics -->
(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();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');
<!-- End Google Analytics -->
}
catch(err) {
ga = function(){return false};
}
</script>
我在你收到一些事件或虚拟页面浏览量的情况下添加了ga对象,以避免更多错误,告诉我们它是否适合你