Bir çekime değecek İşte benzer bir sorunla karşı karşıyayız ve bu soru üzerine (mükemmel) demo sayfanızla karşılaştım.
Belirtildiği gibi, ofset her zaman sayfanızın yüksekliğinin ~% 50'sidir; bu, ilk ofsetinizin nerede olduğuna bakılmaksızın gerçekleşir. Daha önce iOS sürümleri ile benzer bir "atlama" (gerçi çok daha az dramatik atlama) gözlenen Geçmişte
, ben genellikle
body
(
this allows overflow: hidden
to properly work) için
position: fixed
(veya
relative
) uygulayarak bu tür şeyler oldu. Ancak, bu, aşağı kaydırılmışlarsa, kullanıcıyı sayfanın başına geri atlamanın gözetimsiz sonucuna sahiptir. Bazı
JavaScript
bu konuyu ele açığız eğer
Yani, burada bir düzeltme var/Ben birlikte atılan ettik kesmek:
// Tapping into swal events
onOpen: function() {
var offset = document.body.scrollTop;
document.body.style.top = (offset * -1) + 'px';
document.body.classList.add('modal--opened');
},
onClose: function() {
var offset = parseInt(document.body.style.top, 10);
document.body.classList.remove('modal--opened');
document.body.scrollTop = (offset * -1);
}
Ya CSS gibi görünür:
.modal--opened {
position: fixed;
left: 0;
right: 0;
}
Demo sayfanızın bir çatalı aşağıda açıklanmıştır: https://jpattishall.github.io/sweetalert2/ios-bug.html
Ve daha genel bir düzeltme arayanlar için aşağıdaki gibi bir şey yapabilirsiniz. tavuk açma/a kalıcı kapanış:
function toggleModal() {
var offset;
if (document.body.classList.contains('modal--opened')) {
offset = parseInt(document.body.style.top, 10);
document.body.classList.remove('modal--opened');
document.body.scrollTop = (offset * -1);
} else {
offset = document.body.scrollTop;
document.body.style.top = (offset * -1) + 'px';
document.body.classList.add('modal--opened');
}
}
Düzenleme: Unutulmaması gereken bir şey körlemesine tüm cihazların/platformlar, sadece iOS Safari düzeltme geçerli değildi olmasıdır. Diğer bir sorunuzda, taşma hayranı olmadığınızı fark ettim: kaydırma çubuğu göründüğünde/kaybolduğunda sayfanın kaydırılması nedeniyle gizlendim (tamamen katılıyorum). JS'yi yalnızca iOS cihazlara uygulamanızı öneririm.
Javascript'inizde SetTimeout veya setInterval işlevleri var mı? – poashoas
Evet, otomatik odaklama işlevselliğini girin [setTimeout() 'ile çalışır] (https://github.com/limonte/sweetalert2/blob/bf1ee4299f3d52256ba049aa830dc16844fa220c/src/sweetalert2.js#L375-L382) animasyonlardan dolayı –
Bu yalnızca bir kez oldu iOS Safari'de ve bundan sonra hiç olmadı. Ama kromda her seferinde oluyor. – Prav