Photo by Julie Tupas on Unsplash
제이쿼리의 반응형을 즉각 적용시키기 위해 resize시 새로고침(onload)를 사용하게 되면, PC에서는 문제가 없으나 모바일에서 스크롤시 새로고침 메소드가 적용되는 충돌이 있습니다.
해당 문제를 해결하기 위해 윈도우의 사이즈를 재차 확인하는 if문을 사용하면 해결이 가능합니다.
제이쿼리 resize 메소드 사용시 새로고침 되는 문제와 관계는 없습니다.
CSS 속성으로서, body{overscroll-behavior: contain;}
를 사용하면 모바일 스크롤을 최상단 위로 끌어올려도 새로고침이 적용되지 않습니다.
Cache the width of the viewport and on resize return false if the width is still the same. A small jQuery snippet:
var cachedWidth = $(window).width();
$(window).resize(function(){
var newWidth = $(window).width();
if(newWidth !== cachedWidth){
//DO RESIZE HERE
cachedWidth = newWidth;
}
});
var cachedWidth = $(window).width();
$(window).resize(function(){
var newWidth = $(window).width();
if(newWidth !== cachedWidth){
//새로고침 코드================
var delay = 300;//resize 종료 후 0.3초마다 새로 고침
var re_timer = null;
$(window).on('resize', function(){
clearTimeout(re_timer);
re_timer = setTimeout(function(){
document.location.reload();
}, delay);
});
//===================
cachedWidth = newWidth;
}
});
출처) https://stackoverflow.com/questions/9361968/javascript-resize-event-on-scroll-mobile
var dwidth = jQuery(window).width();
jQuery(window).bind('resize', function(e){
var wwidth = jQuery(window).width();
if(dwidth!==wwidth){
dwidth = jQuery(window).width();
if (window.RT) clearTimeout(window.RT);
window.RT = setTimeout(function(){
this.location.reload(false); /* false to get page from cache */
}, 1000);
}
});
사용해보진 못하였지만 참고 하면 좋을 것 같습니다.
출처)https://wp-qa.com/jquery-reload-on-window-resize-loop-on-mobile-devices