スマホサイトでsetTimeout("scrollTo(0,1)", 100)でアドレスバーを隠そうとする手法、読み込み中にコンテンツ内容を読みに行っていると、途中で上部に強制的に戻されてイラッとするのですが、異常に広まっていて迷惑…
2012-03-30 10:55:29@roatnek スクロール量をチェックしてないから、そういうダメ挙動になってしまうんですよね。ちょっと条件分岐するだけでマシになります。まあロケーションバーを隠匿しようとすること自体、色々問題ありまくりなのは同意します……。
2012-03-30 11:21:59スマートフォン環境における各ブラウザのロケーションバーの隠匿は、ある意味で window.open での location=no と同じことをしているといえる。スクロールすれば表示はできるだけ、IE6 時代よりはマシではあるが……。
2012-03-30 11:24:11そのうち、ユーザーによる明示的なスクロールが行われない限り、ロケーションバーは強制表示する……という UI になりそうな気もする。
2012-03-30 11:24:53@roatnek 簡単なようで奥が深い、工数がかかる、倫理的問題(?)もあるということで、色々めんどくさいんですよね。自分からは積極的に提案したことはないです。「こうしてよ」という要望であがってくるもの……という印象が。説得してダメだった場合はしぶしぶ実装せざるをえないんですが。
2012-03-30 11:28:59@roatnek @taku_eof 描画領域を最大化したいなんてみんな(誰)思っているわけで、それを敢えてOS側で抑えているのにはそれなりの理由があってのことと思うし、デフォルトの挙動に手を加えるのはそれが善意に基づくものであってもストレスを生むリスクのほうが大きいと思う。
2012-03-30 11:29:09Mobile Safariの「Webアプリケーションモード」ってどれぐらい活用されてるんやろう。apple-mobile-web-app-capableってやつ。アドレスバー・ナビゲーションバー消したいがために使われてる例ってどれぐらいあるんかな?
2012-03-30 11:29:41めんどくさい場合の例:ビューポートよりコンテンツのほうが小さい場合、スクロール不可 → ロケーションバー隠匿不可なので、こうした場合でも強制的にロケーションバー隠匿するには、コンテンツをビューポートより大きくする必要がある。
2012-03-30 11:31:41@kazuhito @taku_eof そうですね。「ブラウザの持ち物はいじるな」で育ってきてるんで個人的な抵抗感も強いです。不便に思うユーザーが多いのならやるべきは無理くり実装ではなく、ベンダーへのフィードバックでしょうね
2012-03-30 11:32:21そしてビューポートサイズの取得は色々と鬼門。Mobile Safari の旧バージョンではビューポートサイズをまともに取得できなかった。
2012-03-30 11:38:08Android Browser では window.outerHeight が CSS px でないため、Device Pixel Ratio で除算する必要がある。
2012-03-30 11:38:38また resize や orientationchange にも対応する必要がある。iOS では orientationchange 時は window.screen の各値が再計算されてない。
2012-03-30 11:41:31個人的に、いちばん気になってる懸念点は iOS ではナビゲーションバー分の height を取得することができないこと。マジックナンバーで書くのは嫌すぎる。やりかた知ってる方がいらしたら、ぜひ……。
2012-03-30 11:43:31