Заставить 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 (или просто мобильный), так что подлый нюх (обычно я не поощряю это, но мне это нравитсячтобы «нормальные» браузеры настольных компьютеров не прыгали на один пиксель):
/mobile/i.test(navigator.userAgent) && setTimeout(function
() { window.scrollTo(0, 1); }, 1000);
Самая последняя часть этого, и эта часть, кажется, отсутствует в некоторых примерах, которые я видел в Интернете:это: если пользователь специально связался с фрагментом URL, то есть URL имеет хеш, вы не хотите переходить.Поэтому, если я перейду к http://full -frontal.org / tickets # dayconf - я хочу, чтобы браузер естественным образом прокручивал до элемента с идентификатором 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.