Я вызываю функцию, когда размер окна изменяется следующим образом:
window.addEventListener("resize", calculateDimensions());
Но мне нужен способ вызова другой функции ПОСЛЕ изменения размера окна. Есть ли способ добиться этого, используя родной JS (не JQuery)
Tia
3 ответа
Вы можете установить тайм-аут и сбросить его при повторном запуске изменения размера. Таким образом, последний тайм-аут не отменяется, и функция запускается:
function debounce(func){
var timer;
return function(event){
if(timer) clearTimeout(timer);
timer = setTimeout(func,100,event);
};
}
Можно использовать так:
window.addEventListener("resize",debounce(function(e){
alert("end of resizing");
}));
Мне нравится Jonas Wilms изящная маленькая функция debounce, однако я думаю, что было бы лучше пропустить время debounce в качестве параметра ,
// Debounce
function debounce(func, time){
var time = time || 100; // 100 by default if no param
var timer;
return function(event){
if(timer) clearTimeout(timer);
timer = setTimeout(func, time, event);
};
}
// Function with stuff to execute
function resizeContent() {
// Do loads of stuff once window has resized
console.log('resized');
}
// Eventlistener
window.addEventListener("resize", debounce( resizeContent, 150 ));
Используйте window.addEventListener("resize", calculateDimensions);
calculateDimensions()
означает, что вы выполняете функцию, а затем используете этот результат в качестве функции обратного вызова.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.