Mobile Safariでロード後に1pxスクロールするあれはやめた方がいいと思う

Pocket

iPhoneのMobile Safari用のサイトを作る際、
URLバー(ロケーションバー)をデフォルトで非表示にするため、
ページ読み込み完了時にwindow.scrollTo()で1pxだけスクロールさせるというテクニックがあります。

しかしこれには重大な欠点がありまして、読込中にコンテンツをスクロールしてても完了時に1pxのところに強制的に戻されちゃうのです。
ページ読み込み完了をおとなしく待ってるユーザがどれほどいるでしょうか。
しかも、ほとんどの場合、速度の遅い3G回線を使っているはずです。

というわけで、基本的にやらない方がよいと思います。特に長いコンテンツがあるページでは。
そもそもスクロールしたら勝手に非表示になりますしね。

どうしてもやりたいなら、せめて、Scrollバーの座標(iOS4からscrollTopが取れるようになったらしい)を見て、「既にスクロールされてなければ」という条件を入れるべきなんじゃないかなぁ。

たぶんいろんなところで指摘されてて今更なんだろうけど、立て続けにそういうサイトを見て気になったので。

そもそもデフォルトで隠したいのはなんでだろ?
隠れた状態の画面の長さピッタリのコンテンツを作りたい時には有効なのかな??
ホーム画面に登録してなくてもアプリっぽく見せたい???


2 Responses to Mobile Safariでロード後に1pxスクロールするあれはやめた方がいいと思う
  1. Captain 返信

     window.scrollBy にすりゃあ済む話、万事解決

     後、(0, 0) でも大丈夫

  2. [...] Mobile Safariでロード後に1pxスクロールするあれはやめた方がいいと思う   &n... post.tetsuji.jp/2013/02/scrollto01-is-badknowhow

Captain にコメントする コメントをキャンセル

Your email address will not be published. Please enter your name, email and a comment.