簡體   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