繁体   English   中英

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

[英]angular/ionic not working on iOS 10

我有一个使用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 *">

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

我得到了这个工作,问题是使用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块调用的,并且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;
         }]);
}());

我非常感谢您的回答,感谢您分享您的回答作为回复。 我使用ionic2也遇到了同样的问题。 只有白色屏幕显示。 经过大量的搜索和头痛,我添加了一些变化,如添加间隙等。然后我得到几点在ios 10中获得离子构建:

  • CSP元标记。 如果它们导致问题,则删除它们代码中的错误。
  • 打开safari开发工具并检查设备。 确保点击cmd-r重新加载应用程序。 Safari似乎错过了在dev工具打开之前发生的任何错误/控制台日志。
  • Ionic 2项目。 检查你为Typescript错误构建了put。 您可能缺少第三方模块的类型。
  • 提示你的代码。 通过linter运行你的代码。 可能存在您没有看到的错误。 一个短绒将能够抓住这些。 V2项目应该使用离子的tslint规则,V1项目可以使用eslint。

还要确保你们都看看这些选项。 这种错误通常是代码中出现一个小错误的原因。 您需要调试并提供正确的信息。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM