Unsere Web-App benötigt einen festen Header. Wir haben das Glück, dass wir nur die neuesten Browser unterstützen müssen, aber das Verhalten von Safari in diesem Bereich hat uns ein echtes Problem bereitet.
Wie andere bereits betont haben, besteht die beste Lösung darin, unseren eigenen Bildlaufcode zu schreiben. Wir können diesen Aufwand jedoch nicht rechtfertigen, um ein Problem zu beheben, das nur unter iOS auftritt. Es ist sinnvoller zu hoffen, dass Apple dieses Problem beheben kann, zumal Apple, wie QuirksMode vorschlägt, jetzt allein in der Interpretation von "Position: behoben" steht.
http://www.quirksmode.org/blog/archives/2013/12/position_fixed_1.html
Was für uns funktioniert hat, ist zwischen "Position: fest" und "Position: absolut" umzuschalten, je nachdem, ob der Benutzer gezoomt hat. Dies ersetzt unseren "schwebenden" Header durch vorhersehbares Verhalten, das für die Benutzerfreundlichkeit wichtig ist. Beim Zoomen ist das Verhalten nicht das, was wir wollen, aber der Benutzer kann dies leicht umgehen, indem er den Zoom umkehrt.
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";
});
}