Safari on iPhone 対応に関するメモ
- 2010.06.30 Wednesday
- dev
Serene Bach 3.00b027 から iPhone/iPod touch 用の Safari 向け管理画面インターフェースをサポートしました。
Android のブラウザも対応したつもりでしたが、先程エミュレータで確認したら、認識されていませんでした。近日中に修正する予定。
iPhone/Android で採用されているブラウザエンジンは Mobile WebKit (Mobile Safari) と呼ばれるもので、WebKit のサブセットになっているようです。
デスクトップ版 Safari と Mobile Safari で挙動が違うことは知られている通り。JavaScript ではマウスイベントハンドラ、実行時間の制限などがあり、読み込める画像のファイルサイズに制限があったりします。
ここでは Windows 版・Mac OS X 版の Safari をデスクトップ版 Safari と呼んでいます。
今回、Serene Bach 3.00b027 開発中に気づいた細かーーい挙動の差異をメモ。
head
要素内でdocument.write
は使えないっぽい-
document.write
自体は使える様子ですが、実行場所を選ぶようです。詳細は検証していないのですが、とりあえず
head
要素内に置かれたscript
でdocument.write
は実行できないようでした。どうしてそんな場所で
document.write
を実行しているのかというと、外部 js から別の js ファイルをロードするため。head
要素内に DOM でappendChild
する方法もあって、個人的にはこっちの方がしっくりするんですが、やや古い Safari で動作しなかったという経緯があり、document.write
を使っていました。 td 要素 (多分
th
要素も) の display スタイルを変更できないっぽい-
これも詳細は検証していませんが、例えば、以下のようなスタイル……
table#specific > tbody > tr > td { display: block; }
は動作しませんでした。
ある特定の項をブロック要素として動作させたい意図があったのですが、動作しませんでした。デスクトップ版 Safari では動作するので、Mobile Safari の特徴の様子です。perl スクリプト本体の方は変更なしでいけるかとも思ったのですが、この仕様 (?) のため、ダメでした。
contenteditable
は利用できない-
Preparing Your Web Content for iPad: Technical Note TN2262: Preparing Your Web Content for iPad でも触れられていますが、
contenteditable
は利用できないようです。おそらく
designMode
もダメでしょう。とりあえず、Serene Bach 3 で利用されているカスタム CodePress は利用できませんでした。
スポンサーリンク