Scrollen Sie persönlich position: fixed
automatisch nach oben . Ziemlich nervig !
Um andere Geräte und Versionen nicht zu bestrafen, wende ich diesen Fix nur auf die entsprechenden Versionen von iOS an.
** VERSION 1 - Alle Modalitäten behoben **
Für das Javascript / jQuery
$(document).ready(function() {
// Detect ios 11_x_x affected
// NEED TO BE UPDATED if new versions are affected
var ua = navigator.userAgent,
iOS = /iPad|iPhone|iPod/.test(ua),
iOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(ua);
// ios 11 bug caret position
if ( iOS && iOS11 ) {
// Add CSS class to body
$("body").addClass("iosBugFixCaret");
}
});
Für das CSS
/* Apply CSS to iOS affected versions only */
body.iosBugFixCaret.modal-open { position: fixed; width: 100%; }
** VERSION 2 - Nur ausgewählte Modalitäten **
Ich habe die Funktion so geändert, dass sie nur für ausgewählte Modalitäten mit einer Klasse ausgelöst wird .inputModal
Nur die Modalitäten mit Eingängen sollten beeinflusst werden, um ein Scrollen nach oben zu vermeiden.
Für das Javascript / jQuery
$(document).ready(function() {
// Detect ios 11_x_x affected
// NEED TO BE UPDATED if new versions are affected
(function iOS_CaretBug() {
var ua = navigator.userAgent,
scrollTopPosition,
iOS = /iPad|iPhone|iPod/.test(ua),
iOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(ua);
// ios 11 bug caret position
if ( iOS && iOS11 ) {
$(document.body).on('show.bs.modal', function(e) {
if ( $(e.target).hasClass('inputModal') ) {
// Get scroll position before moving top
scrollTopPosition = $(document).scrollTop();
// Add CSS to body "position: fixed"
$("body").addClass("iosBugFixCaret");
}
});
$(document.body).on('hide.bs.modal', function(e) {
if ( $(e.target).hasClass('inputModal') ) {
// Remove CSS to body "position: fixed"
$("body").removeClass("iosBugFixCaret");
//Go back to initial position in document
$(document).scrollTop(scrollTopPosition);
}
});
}
})();
});
Für das CSS
/* Apply CSS to iOS affected versions only */
body.iosBugFixCaret.modal-open { position: fixed; width: 100%; }
Für den HTML- Code
Fügen Sie die Klasse inputModal zum Modal hinzu
<div class="modal fade inputModal" tabindex="-1" role="dialog">
...
</div>
Nota bene
Die Javascript-Funktion ruft jetzt selbst auf
** UPDATE iOS 11.3 - Fehler behoben 😃🎉 **
Ab iOS 11.3 wurde der Fehler behoben. Es besteht keine Notwendigkeit, auf OS 11_
in zu testeniOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(ua);
Seien Sie jedoch vorsichtig, da iOS 11.2 immer noch weit verbreitet ist (Stand April 2018). Sehen
stat 1
stat 2