iPad でフォントが明朝体になる問題

iPad向けのアプリを作っていて、font-familyで
ゴシック体を指定しているのに、明朝体が表示される、という問題がありました。

これはブラウザのフォントのデフォルトが、ゴシック体だったのが、
アップデートで途中から明朝体に切り替わった、というのが原因らしいです。

つまり、元々は指定していなかったフォント、
あるいは、指定したつもりで適用できていなかったフォントが、
ある日アップデートで明朝体で表示されてびっくりする、という訳です。

面倒くさいようですが、プログラムの世界では、
何でもきちんと指定しておいた方が良い結果を生むようです。

変数は、宣言 + 初期化しておいた方が処理が早くなるし、
imgタグは、幅と高さが指定されている方が表示が早くなります。

今回の件は、Create.js(Easel.js)を使っていたのですが、
元々が

new createjs.Text(this.hoge,"10px Arial Bold","#000000");

だったのですが、 Arialが適用されていませんでした。
下記のように「Hiragino Kaku Gothic ProN」を指定することで
表示されました。

new createjs.Text(this.hoge,"10px Hiragino Kaku Gothic ProN Bold","#000000");

2014年4月9日、あと1週間でWindowsXPのサポートが切れ、悪名高き
InternetExplorerの旧バージョンとの決別を果たすことが出来ると
期待していますが、ブラウザとの戦いはまだまだ続くようです。

iPad で画像のキャッシュがどうしても消えない場合

新しい画像を用意したのに、どうしても反映されない…。
ブラウザ(Safari)のキャッシュをクリアしても
新しいデータが反映されない場合の解決法です。

ちなみに、iPad、iPhoneのSafariのキャッシュのクリア方法です。

設定→ Safari→ 「履歴を消去」
設定→ Safari→ 「Cookieとdデータを消去」

これではいくらやっても消えません…。
PCでは反映されているのですが。

画像名にスタイルシートやJavaScriptでよくやる、
タイムスタンプを追加することで何とか解決しました。

image.src = this.FileNm + '?' + new Date().getTime();

少し古くなっていますが、こちらの記事が参考になりました。
iPad上でWEB開発してて、なぜか画像が出ない時に確認したら良さそうなこと

Safariでは、「一画面での最大画像サイズは6.5M」だそうです…。
imgにキャッシュした場合、ガベージコレクションが正常に行われないなど、
JavaScript でアプリを作っていると悩ましい問題が山積しているようです。

<2014.04.02追記>
この記事を書いてしばらくしてから気づいたのですが、
他のプログラマが作ったアプリ(WebView)上で、
キャッシュが消えずに悩んでいました。
WebViewだけの問題かなと思って調べると、
案の定、下記の記事が見つかりました。

【[XCODE] UIWebViewでHTML,CSS,JSなどをキャッシュさせない方法】

分担して仕事をしていると気づかないかも知れませんね。
いずれWebViewも使うことになると思うので、メモがてら追記しておきます。

スマートフォン(Android/iPhone)でのファイルアップロードについて

HTML5でファイルをアップロードする際、
たとえばXMLHttpRequestを使う場合ですが、
スマートフォンでは問題があるようです。

①File API 対応ブラウザについて
ローカルのファイルをアップロードするには、
ローカルファイルにアクセスして、
Ajaxでの送受信を行うためのHTML5の新機能
「FileAPI」に対応しているブラウザが必要になります。
PCのIEはver9まで、非対応(IE10から対応しています)。
Win版のSafariはver5どまりで、非対応という状況…(2013年2月時点)。
Mac版のSafariは6から対応しているようですが、手持ちの環境では確認できず。
Android2は非対応。4では対応しています。

②スマートフォンの標準ブラウザについて
スマートフォンの標準ブラウザは、
アップロード用のフォームタグ(type=”file”)の機能に
対応していないのが、ほとんどです。
なんと、iOS6のみが対応しているという状況です。
したがって、スマートフォンからファイルをアップロードするには、
Javaや、object-cで作られたアプリを利用するか、
メールに添付して送信する、というのが一般的になっているそうです。

つまり、2013年2月の現状では、
スマートフォンでは、ウェブベースのアプリから
ファイルをアップロードすることは(iOS6を除いて)
ほとんど出来ないという状況なのです。

ネイティブアプリにはそんな利点があるのですね…。
ウェブベースのアプリをPhoneGapでネイティブ系のアプリに
変換した場合はどうなるんでしょう?
PhoneGapはまだ使ったことがないのですが、
ちゃんと対応してもらえるならすごいですね。

参考記事: スマートフォンのファイルアップロードについて
http://q.hatena.ne.jp/1309169089
http://okwave.jp/qa/q7427758.html
http://adedit.blogspot.jp/2012/02/iphone-ipadiosopera-mini.html