Cá nhân, position: fixed
tự động cuộn lên đầu trang . Khá khó chịu !
Để tránh phạt các thiết bị và phiên bản khác, tôi chỉ áp dụng bản sửa lỗi này cho các phiên bản iOS thích hợp.
** PHIÊN BẢN 1 - Đã sửa tất cả các chế độ **
Đối với javascript / jQuery
$(document).ready(function() {
var ua = navigator.userAgent,
iOS = /iPad|iPhone|iPod/.test(ua),
iOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(ua);
if ( iOS && iOS11 ) {
$("body").addClass("iosBugFixCaret");
}
});
Đối với CSS
body.iosBugFixCaret.modal-open { position: fixed; width: 100%; }
** PHIÊN BẢN 2 - Chỉ các phương thức đã chọn **
Tôi đã sửa đổi chức năng để chỉ kích hoạt cho các phương thức đã chọn với một lớp .inputModal
Chỉ các phương thức có đầu vào mới được tác động để tránh cuộn lên đầu.
Đối với javascript / jQuery
$(document).ready(function() {
(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);
if ( iOS && iOS11 ) {
$(document.body).on('show.bs.modal', function(e) {
if ( $(e.target).hasClass('inputModal') ) {
scrollTopPosition = $(document).scrollTop();
$("body").addClass("iosBugFixCaret");
}
});
$(document.body).on('hide.bs.modal', function(e) {
if ( $(e.target).hasClass('inputModal') ) {
$("body").removeClass("iosBugFixCaret");
$(document).scrollTop(scrollTopPosition);
}
});
}
})();
});
Đối với CSS
body.iosBugFixCaret.modal-open { position: fixed; width: 100%; }
Đối với HTML
Thêm class inputModal vào phương thức
<div class="modal fade inputModal" tabindex="-1" role="dialog">
...
</div>
Nota Bene
Chức năng javascript hiện đang tự gọi
** CẬP NHẬT iOS 11.3 - Đã sửa lỗi 😃🎉 **
Kể từ iOS 11.3, lỗi đã được sửa chữa. Không cần phải kiểm tra OS 11_
trongiOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(ua);
Nhưng hãy cẩn thận vì iOS 11.2 vẫn được sử dụng rộng rãi (tính đến tháng 4 năm 2018). Xem
stat 1
stat 2