我有一个使用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 *">
我已尝试过与其他人面临的类似问题相关的各种建议,但没有任何帮助。任何建议都表示赞赏。
答案 0 :(得分: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
块调用的,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;
}]);
}());
答案 1 :(得分:3)
我非常感谢您的回答,感谢您分享您的回答作为回复。我使用ionic2也遇到了同样的问题。只有白色屏幕显示。经过大量的搜索和头痛之后,我添加了一些变化,例如添加间隙等。然后我在ios 10中得到了离子构建的几点:
还要确保大家都看看这些选项。这种错误通常是代码中出现一个小错误的原因。您需要调试并提供正确的信息。感谢。