如何检测窗口末尾的鼠标调整大小?

时间:2013-12-17 12:55:16

标签: javascript jquery events resize mouseevent

我正在寻找一种方法来在窗口调整大小的最后检测mouseup事件(通过拖动完成)。 (AFAICT,resize$(window)上的$(document)处理程序无法接听此事件。)

PS:就我的目的而言,定义一个“拖动调整大小”是可以的,因为调整大小发生在mousedown(在窗口上合适的调整大小的轨迹上)和相应的mouseup事件之间,忽略用户在这两个端点之间按住鼠标按钮时可能发生的任何暂停。

2 个答案:

答案 0 :(得分:1)

$ npm install resizeend

或添加到您的页面:

<script src="https://raw.githubusercontent.com/jeremenichelli/resizeend/master/dist/resizeend.min.js"></script>

然后只使用该事件:

window.addEventListener('resizeend', function() {
    alert('You are not resizing the window anymore!');
});

答案 1 :(得分:0)

我无法100%做得很好。但这是可行的。 计划是每毫秒检查一个像素(这里我检查调整大小的中间部分,在beginnig和结束时调整大小通常在1.5以下),然后设置一个计时器,但浏览器不够灵活,只能像调整大小一样触发8倍。

let resizeTimer;
let w = 0;
let ww = 100;
let t = new Date();
t=t.getTime();
let tt = new Date();
let d = 0;
let ms = 0;

window.onresize = function(){
    ww = w;
    w = window.innerWidth
    d=w<ww?ww-w:w-ww;
    tt = new Date();
    tt = tt.getTime();
    ms= tt-t;
    t=tt;
    console.log(d/ms)
    if(d/ms>1.5){clearTimeout(resizeTimer);
    resizeTimer= setTimeout(function(){console.log("trigger")}, 210);
    }
};

缩小版:

var a,b=0,c=100,d=new Date;d=d.getTime();var e=new Date,f=0,g=0;window.onresize=function(){c=b;b=window.innerWidth;f=b<c?c-b:b-c;e=new Date;e=e.getTime();g=e-d;d=e;1.5>f/g&&(clearTimeout(a),a=setTimeout(function(){console.log("trigger")},210))};