Remy Sharpは、彼の記事「正しく実行する:iPhoneのURLバーをスキップする」でプロセスについて適切に説明しています。
iPhoneにURLバーを非表示にするのはかなり簡単です。次のJavaScriptを実行する必要があります。
window.scrollTo(0, 1);
しかし、いつの問題がありますか?iPhoneがドキュメントの最初のピクセルまでスクロールできるように高さが正しくなったら、これを行う必要があります。そうしないと、高さが読み込まれ、URLバーが強制的に表示されます。
画像が読み込まれてwindow.onloadイベントが発生するまで待つこともできますが、これが常に機能するとは限りません。すべてがキャッシュされている場合、イベントの発生が早すぎて、scrollToがジャンプする機会がありません。以下はwindow.onloadを使用した例です:http://jsbin.com/edifu4/4/
私は個人的に1秒間タイマーを使用します。これは、レンダリングを待つ間、モバイルデバイスでは十分な時間ですが、起動が早すぎないように十分な長さです。
setTimeout(function () { window.scrollTo(0, 1); }, 1000);
ただし、これはiPhone(または単にモバイル)ブラウザの場合にのみセットアップする必要があるため、卑劣なスニフ(通常は推奨しませんが、「通常の」デスクトップブラウザが1ピクセルジャンプするのを防ぐためにこれで問題ありません) )::
/mobile/i.test(navigator.userAgent) && setTimeout(function
() { window.scrollTo(0, 1); }, 1000);
これの最後の部分であり、これは私がWebで見たいくつかの例から欠落しているように見える部分です:ユーザーがURLフラグメントに特にリンクしている場合、つまりURLにハッシュがある場合、ジャンプしたくない。したがって、http://full-frontal.org/tickets#dayconfに移動する
と、ブラウザがidがdayconfである要素まで自然にスクロールし、scrollTo(0、1)を使用して先頭にジャンプしないようにします。
/mobile/i.test(navigator.userAgent) && !location.hash &&
setTimeout(function () { window.scrollTo(0, 1); }, 1000);
これをiPhone(またはシミュレーター)http://jsbin.com/edifu4/10
で試してみると、URLフラグメントのないページに到達したときにのみスクロールすることがわかります。