Наше веб-приложение требует фиксированного заголовка. Нам повезло, что мы должны поддерживать только самые последние браузеры, но поведение Safari в этой области вызвало у нас настоящую проблему.
Лучшее решение, как отмечали другие, - это написать собственный код прокрутки. Тем не менее, мы не можем оправдать эти попытки решить проблему, возникающую только на iOS. Имеет больше смысла надеяться, что Apple может решить эту проблему, тем более что, как предполагает QuirksMode, Apple теперь стоит одна в своей интерпретации «позиция: исправлена».
http://www.quirksmode.org/blog/archives/2013/12/position_fixed_1.html
Для нас сработало переключение между «позицией: фиксированной» и «позицией: абсолютной» в зависимости от того, увеличил ли пользователь масштаб. Это заменяет наш «плавающий» заголовок предсказуемым поведением, что важно для удобства использования. При увеличении масштабирования это не то, что нам нужно, но пользователь может легко обойти это, изменив масштаб.
// On iOS, "position: fixed;" is not supported when zoomed, so toggle "position: absolute;".
header = document.createElement( "HEADER" );
document.body.appendChild( header );
if( navigator.userAgent.match( /iPad/i ) || navigator.userAgent.match( /iPhone/i )) {
addEventListener( document.body, function( event ) {
var zoomLevel = (( Math.abs( window.orientation ) === 90 ) ? screen.height : screen.width ) / window.innerWidth;
header.style.position = ( zoomLevel > 1 ) ? "absolute" : "fixed";
});
}