В comment вы сказали, что после того, как освежающий изменение размера в порядке. Для этого вам нужен дебютант. Debouncer - это функция, которая проверяет, не произошло ли событие после заданной задержки, и только тогда он запускает обработчик событий, который вы передали для события. Как так:
var oldSide = window.innerWidth - 1200; // Stores positive value, if current size is greater than 1200, else zero or negative
// This is the debouncer, it delays the execution of the given handler untill user stops resizing
function debounce(fn, delay) {
var delayId, delay = delay || 200;
return function() {
var scope = this, args = arguments;
clearTimeout(delayId);
delayId = setTimeout(function() {
fn.apply(scope, Array.prototype.slice.call(args));
}, delay);
}
}
// Here we add the resize listener, notice, that we call the debouncer, and pass our actual handler to that
$(window).resize(debounce(function (e) {
var newSide = window.innerWidth - 1200;
// newSide * oldSide is negative, if 1200 is acrossed in either directions during the last resizing
if (newSide * oldSide <= 0) {
// Window size acrossed 1200 during the last resize, refresh the page
}
// Window size didn't across 1200 during the last resize, set a new value to oldSide, and keep listening
oldSide = newSide;
}));
A working demo at jsFiddle (журналы только не утешать, не обновления).
Обратите внимание, что если вы не собираетесь обновлять, когда 1200 перегружен, вам необходимо вернуться из блока if
.
Вы также можете обнаружить «границу поперек» в debouncer (сразу после clearTimeout
), таким образом, это будет более реальное время, но может иметь пробел в несколько пикселей.
Дебютант, который я использовал здесь, составляет BGerrissen's great answer at SO.
'window.innerWidth' доступен только для чтения ... После исправления этого, скорее всего, в то время, когда вы читаете значение, это нечто иное, чем 1199. Вам нужен пробел. – Teemu
Используйте '==' в вашем операторе if – rosscj2533
@ rosscj2533 На самом деле, в javascript это не '==='? –