どうも、なかたです。
「COTeggのバケツ」というブログを立ち上げました。
これは技術的なテクニック、問題点や解決方法をバケツに放り込むように
どんどん書いていく目的で作成しました。
バケツいっぱいになるように少しずつ溜めていこうこと思います。
というわけで、今回はionic!
iOSシミュレータで画面が真っ白問題!!
※今回の話は、ionic開発環境が構築されていることが前提です。
アプリを作成する上で、ionicというHTMLハイブリットフレームワークを使用しております。
ブラウザでも簡単にデバッグできので超便利!
ちなみにブラウザでの確認方法は、プロジェクトディレクトリに移動して
$ cd (ionicプロジェクトのディレクトリ)
$ ionic serve
んで、デフォルトポート8100でローカルサーバが起動して、ブラウザで確認できるんですね。
さらに、コマンド一つでシミュレータでも確認できます
$ ionic emulate ios
iosシミュレータが起動して…って感じだったんですが、
ここで問題発生。
シミュレータが真っ白!
なんで?!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta name="format-detection" content="telephone=no">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<!-- moment -->
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<!-- angular moment -->
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-moment/0.8.2/angular-moment.min.js"></script>
<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>
<!-- your app's js -->
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
</head>
<body ng-app="starter">
<ion-nav-bar class="bar-stable">
<ion-nav-back-button>
</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
</body>
</html>
ionicで自動生成されたindex.htmlにmomentのJSをCDNで取り込んだだけで、なんの変哲もなさそうですが…
事象を整理してみました。
- ブラウザではちゃんと表示される
- シミュレータで表示されない
- momentのCDNを追加した
んで、さらにこういったサイトも参考にしてみました。
ブラウザでデバッグしてみると、どうやらmomentのJS読み込みに失敗してるっぽいですね。
(もうちょっとエラーを強調してほしい。。)
ということは、CDNで記載した部分のプロトコルが、ブラウザでは、http:が補完され
シミュレータでは、file:が補完されたんでは?!と考えたので
こうやってみました。
<!-- moment -->
<script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<!-- angular moment -->
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-moment/0.8.2/angular-moment.min.js">
ちゃんとプロトコル(http:)まで指定する!
すると無事解決。
考えてみるとそうですね。。
小さな経験コツコツと。









