SimpleBoxes

Safari on iPhone 対応に関するメモ

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 要素内に置かれた scriptdocument.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 は利用できませんでした。

スポンサーリンク