Hatena::ブログ(Diary)

yagutaの日記 このページをアンテナに追加 RSSフィード

プロフィール

yaguta

dev.yutaka@gmail dot com

2008-08-25 iPhone/iPod touch Safari のスクロール位置情報を記録する

iPhone/iPod touch Safari のスクロール位置情報を記録する

| 01:15 | iPhone/iPod touch Safari のスクロール位置情報を記録するを含むブックマーク iPhone/iPod touch Safari のスクロール位置情報を記録するのブックマークコメント

iPhone/iPod touchJailbreak して Safariパッチを当てると、ローカルの HTMLファイルをブラウジングできるようになります。

Safariの操作性は快適なんだけど、問題はしょっちゅう落ちること。特に大きなファイルを読み込んでいるときに落ちやすいようで、落ちるたびにスクロールして元の状態にもどすのが大変だったりします。

Safariが安定してくれればいいんだけど、まだまだ時間がかかりそう。

そんなわけで、ブラウンジングしているファイルとスクロール位置を記憶するスクリプトを作ってみました。

動作条件は以下の通り。

動作確認は iPod touch 2.0.1 で行っています。

Download

ダウンロードこちらから。

導入

  1. zip ファイル中の shioriディレクトリを SFTPなどで iPhone に転送します。 (例) /var/mobile/media/shiori
  2. iPhone Safari を起動して 1で転送した shiori/shiori.htmlブックマークします。
  3. shiori/save.jsファイルの中身を "Save" という名前で Bookmark登録します。登録方法はこちらが参考になります。

使い方

位置の記憶

ローカルファイルを Safariで読み込み、導入3 で作成した "Save" Bookmarkを読み込みます。

Saveに成功するとダイアログを表示します。

f:id:yaguta:20080826005812p:image

Save後は、画面の左下に「S」マークが現れます。マークをクリックするといつでも位置情報を保存できます。

f:id:yaguta:20080826005813p:image


位置の読み込み

導入2 で作成した shiori.html ブックマークを読み込みます。

記憶したファイルの一覧が表示されます。

f:id:yaguta:20080826005814p:image

選択するとファイルを読み込みます。読み込みが完了すると記憶した位置に自動的に移動します。(大きなファイルだと読み込み終わって移動するまでに時間がかかります。。)


位置の削除

shiori.html ブックマークを読み込んだ画面の右上の "to Delete mode"ボタンを押すと記憶した削除モードになり、選択した項目を削除できます。

f:id:yaguta:20080826005815p:image


その他

  • 位置情報の記憶には iPhone 2.0の Safariから対応した LocalDatabaseを利用しています。
  • 位置情報を復元するために、frameを利用しています。大きさ 100%のframeを作成して、frame外からファイルを読み込ませ、読み込みが完了したあとでスクロール位置を移動しています。
  • 画面デザインには iPhone UI Kit を使用しています。
  • SQLiteの Datetime型を扱うためにSQLiteのdatetime型とDateオブジェクトの相互変換ライブラリを使用しています。
  • 本当は Jailbreakなしでも使えるように bookmarklet化も試してみたけど、上手く行かない。LocalDatabaseのクロスドメイン制約は何とかなっても、frameのクロスドメイン制約を乗り越えられず。。結局、Jailbreakインストールが大変だったりとなんだか微妙なものに。。

参考サイト

トラックバック - http://d.hatena.ne.jp/yaguta/20080825/1219680945