2015-07-06 2 views
3

У меня есть сайт, который необходимо перезагрузить после изменения размера и нашел свой собственный предел кодирования скрипт, который автоматически перезагружает страницу:Detect когда окно событий изменения размера делается

Я хочу сценарий вести себя следующим образом :

если ширина окна была < 768px и остается < 768px я не хочу, чтобы перезагрузить страницу

если ширина окна была >= 768px и идет < 768px Я хочу, чтобы перезагрузить страницу однажды

если ширина окна была < 768px и идет >= 768px Я хочу, чтобы перезагрузить страницу

если ширина окна была >= 768px и остается >= 768px он всегда должен перезарядить

последняя часть делается легко, используя следующий код:

// After resize events 
var id; 
$(window).resize(function() { 
    clearTimeout(id); 
    id = setTimeout(doneResizing, 500); 
}); 
function doneResizing(){ 
    if($(window).width() > 767) { 
     if (window.RT) clearTimeout(window.RT); 
      window.RT = setTimeout(function() 
      { 
      this.location.reload(false); /* false to get page from cache */ 
      }, 200); 
    } 
} 

Я думаю, что мне нужно создать var, который хранит текущий $(window).width();, а не с if {} else if {} else {}, но с этого момента мой разум теряет контроль.

+0

http://stackoverflow.com/questions/5489946/jquery-how-to-wait-for-the-end-of-resize-event-and-only-then-perform-an-ac – Skatch

+0

Почему нужно перезагружать страницу? Если это проблема стиля, вы можете посмотреть в Media Queries –

+0

@JonathonBlok У меня есть несколько сценариев, которые я не могу «удалить», после того, как я их добавил, и хотя сайт действительно вычисляет множество высот и ширины, которые необходимо пересчитать, как только изменится размер окна! –

ответ

1
// After resize events 
var id; 
var startWidth = window.innerWidth; //get the original screen width 

$(window).resize(function() { 
    clearTimeout(id); 
    id = setTimeout(doneResizing, 500); 
}); 
function doneResizing(){ 
    if ($(window).width() > 767) { 
     this.location.reload(false); 
    } else { 
     if (startWidth > 767){ 
      this.location.reload(false);     
     } 
    } 
} 
Смежные вопросы