व्यक्तिगत रूप से, position: fixed
शीर्ष पर स्वचालित रूप से स्क्रॉल करें । काफी कष्टप्रद !
अन्य उपकरणों और संस्करणों को दंडित करने से बचने के लिए, मैं केवल आईओएस के उपयुक्त संस्करणों के लिए इस फिक्स को लागू करता हूं।
** संस्करण 1 - सभी तरीके ठीक हैं **
जावास्क्रिप्ट / 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");
}
});
सीएसएस के लिए
body.iosBugFixCaret.modal-open { position: fixed; width: 100%; }
** संस्करण 2 - केवल चयनित मॉड्यूल
मैंने केवल एक वर्ग के साथ चयनित मॉड्यूल के लिए आग को संशोधित किया .inputModal
स्क्रॉल से बचने के लिए इनपुट के साथ केवल मॉडल्स को प्रभावित किया जाना चाहिए।
जावास्क्रिप्ट / 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);
}
});
}
})();
});
सीएसएस के लिए
body.iosBugFixCaret.modal-open { position: fixed; width: 100%; }
HTML के लिए मॉडल
में वर्ग इनपुटमॉडल जोड़ें
<div class="modal fade inputModal" tabindex="-1" role="dialog">
...
</div>
नोटा
ने जावास्क्रिप्ट समारोह अब आत्म-आह्वान है
** अद्यतन iOS 11.3 - बग सुधारा 11 **
IOS 11.3 के रूप में, बग को ठीक कर दिया गया है। के लिए परीक्षण करने की कोई आवश्यकता नहीं OS 11_
हैiOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(ua);
लेकिन सावधान रहें क्योंकि iOS 11.2 अभी भी व्यापक रूप से उपयोग किया जाता है (अप्रैल 2018 तक)। देख
प्रतिमा १
प्रतिमा २