当Adblocker启用时,Google Analytics正在打破我的Angularjs应用程序

时间:2016-07-19 06:29:05

标签: javascript angularjs google-analytics

我安装了以下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');

许多控制器都存在这种依赖关系。

所以我的问题是,这是最好的方法吗?或者有更好的方法可以适用吗?

1 个答案:

答案 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对象,以避免更多错误,告诉我们它是否适合你