Paw*_*lik 7 google-analytics adblock angularjs
我的角度应用取决于第三方角度服务:
var app = angular.module("ninjaModule", ['angular-google-analytics']);
Run Code Online (Sandbox Code Playgroud)
只要我的广告拦截插件关闭,该应用就可以正常加载.但是,如果广告拦截器出现角度$injector:nomod错误,则无法加载整个应用.
我正在寻找一种优雅地处理这些错误的方法,因此无论广告拦截器如何,都能够加载应用程序.如果angular-google-analytics不存在 - 那很好,它并不重要,我可以处理它或设置一些后备.但整个应用程序崩溃的情况对我来说不是一个选择.有任何想法吗?
确切地说 - 我不想解决广告拦截器问题,例如重命名我的脚本文件.我期待一个有角度的尝试捕捉魔法技巧.
Plunker:http://plnkr.co/edit/sbEG6vclPidPSNGV5Bsa
我终于让它工作了。不过,该解决方案需要一些技巧:
deps动态为主模块准备依赖项列表 ( )$injector而不是Analytics显式地使用尽管如此,我仍然需要配置AnalyticsProvider,但它应该相对容易完成$injector。
var deps = [];
try {
angular.module("angular-google-analytics"); // this throws if GA script is not loaded
deps.push('angular-google-analytics');
} catch(e){ console.error("GA not available", e); }
angular.module('mainApp', deps)
.run(function($rootScope, $injector) {
try {
Analytics = $injector.get('Analytics');
$rootScope.trackPage = function() {
console.log('Analytics in action!');
Analytics.trackPage();
}
} catch(e) {
$rootScope.trackPage = function(key, label) {
console.log("Fallback in action!")
}
}
})
.controller('MyCtrl', function($rootScope, $scope) {
$scope.message = 'Hello World!';
$rootScope.trackPage();
});
Run Code Online (Sandbox Code Playgroud)
更新后的插件:http://plnkr.co/edit/Zo4RgKOybzhvJQdW2nQZ ?p=preview
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |