角度/离子在iOS 10上不起作用

Mar*_*ila 9 javascript ios angularjs cordova ionic-framework

我有一个使用Ionic框架开发的Cordova应用程序,曾经在iOS上运行良好,但在iOS 10上则不然.当我在模拟器中启动应用程序时,没有Angular特定的工作(绑定,事件等).这是一个截图.

在此输入图像描述

如果我从Safari附加开发人员工具,我在控制台中看不到任何内容.但是,如果我按下刷新按钮并重新加载索引页,一切都会正常工作.

我怀疑这与iOS 10上的内容安全策略有关.我的Content-Security-Policy元标记如下所示:

<meta http-equiv="Content-Security-Policy" 
      content="default-src 'self' data: gap: file://* * 'unsafe-eval'; 
               script-src 'self' 'unsafe-inline' 'unsafe-eval' *; 
               style-src 'self' 'unsafe-inline' *; 
               media-src *">
Run Code Online (Sandbox Code Playgroud)

我已经尝试过与其他人面临的类似问题相关的各种建议,但没有任何帮助.任何建议都表示赞赏.

Mar*_*ila 5

我得到了这个工作,问题是使用Google Analytics的工厂.代码(部分)看起来像这样:

(function () {
   'use strict';

   angular
      .module('appname.factories')
      .factory("analyticsFactory", [
         function () {
            var trackInitialize = function () {
               if (typeof analytics !== undefined) {
                  analytics.startTrackerWithId("...");
               }
               else {
                  console.log("Google Analytics Unavailable");
               }
            };

            return {
               trackInitialize: trackInitialize
            }
         }]);
}());
Run Code Online (Sandbox Code Playgroud)

这是从模块的run块中调用的,analytics不可用.修复是$window为了使用而传递到工厂analytics.

(function () {
   'use strict';

   angular
      .module('appname.factories')
      .factory("analyticsFactory", [
         '$window',
         function ($window) {
            var emptyFn;

            emptyFn = function () { };
            emptyFn['mocked'] = true;

            var analytics = $window && $window['analytics'] ? $window['analytics'] : {
               startTrackerWithId: emptyFn,
               trackView: emptyFn,
               trackEvent: emptyFn,
               trackException: emptyFn,
            };

            analytics.trackInitialize = function () {
               analytics.startTrackerWithId("...");
               if (analytics['mocked']) 
                  console.log("Google Analytics Unavailable");
            };

            return analytics;
         }]);
}());
Run Code Online (Sandbox Code Playgroud)