DOM onresize событие

Если у меня есть это

window.onresize = function() {
  alert('resized!!');
};

Моя функция запущена многократно в течение изменения размер, но я хочу получить завершение изменения размер. Это находится в IE.

Какие-либо идеи? Там существуют различные идеи, но не работал на меня до сих пор (пример, IE предположил window.onresizeend событие.)

22
задан UpTheCreek 27 August 2012 в 08:09
поделиться

2 ответа

This is not perfect but it should give you the start you need.

var initialX = null;
var initialY = null;
var lastResize = null;
var waiting = false;
var first = true;
var id = 0;

function updateResizeTime()
{
    if (initialX === event.clientX && initialY === event.clientY)
    {
        return;
    }

    initialX = event.clientX;
    initialY = event.clientY;

    if (first)
    {
        first = false;
        return;
    }

    lastResize = new Date();            
    if (!waiting && id == 0)
    {
        waiting = true;
        id = setInterval(checkForResizeEnd, 1000);
    }
}

function checkForResizeEnd()
{
    if ((new Date()).getTime() - lastResize.getTime() >= 1000)
    {
        waiting = false;
        clearInterval(id);
        id = 0;
        alert('hey!');
    }
}

window.onresize = function()
{
    updateResizeTime();
}
5
ответ дан 29 November 2019 в 04:20
поделиться

Вы получаете несколько событий, потому что на самом деле событий несколько. Windows анимирует изменение размера, делая это несколько раз при перетаскивании окна (по умолчанию, я думаю, вы можете изменить это в реестре).

Что вы могли бы сделать, так это добавить задержку. Выполняйте clearTimeout, setTimout (myResize, 1000) каждый раз, когда запускается событие IE. Тогда только последний будет изменять размер.

4
ответ дан 29 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: