¿Cómo esperar el "fin" del evento "cambiar tamaño" y solo entonces realizar una acción?

Resuelto Rella asked hace 13 años • 27 respuestas

Entonces actualmente uso algo como:

$(window).resize(function(){resizedw();});

Pero esto se llama muchas veces mientras continúa el proceso de cambio de tamaño. ¿Es posible captar un evento cuando finaliza?

Rella avatar Mar 31 '11 00:03 Rella
Aceptado

Puedes usar setTimeout()yclearTimeout()

function resizedw(){
    // Haven't resized in 100ms!
}

var doit;
window.onresize = function(){
  clearTimeout(doit);
  doit = setTimeout(resizedw, 100);
};

Ejemplo de código en jsfiddle .

Mark Coleman avatar Mar 30 '2011 17:03 Mark Coleman

Tuve suerte con la siguiente recomendación: http://forum.jquery.com/topic/the-resizeend-event

Aquí está el código para que no tengas que buscar en el enlace y la fuente de su publicación:

var rtime;
var timeout = false;
var delta = 200;
$(window).resize(function() {
    rtime = new Date();
    if (timeout === false) {
        timeout = true;
        setTimeout(resizeend, delta);
    }
});

function resizeend() {
    if (new Date() - rtime < delta) {
        setTimeout(resizeend, delta);
    } else {
        timeout = false;
        alert('Done resizing');
    }               
}

¡Gracias sime.vidas por el código!

Dolan Antenucci avatar May 08 '2011 06:05 Dolan Antenucci