Javascript 如何在窗口结束时检测鼠标移动?

Javascript 如何在窗口结束时检测鼠标移动?,javascript,jquery,events,resize,mouseevent,Javascript,Jquery,Events,Resize,Mouseevent,我正在寻找一种方法来检测窗口调整最后的mouseup事件(通过拖动完成)。(AFAICT,此事件不会被$(窗口)或$(文档)上的调整大小处理程序拾取) PS:出于我的目的,可以将“拖动调整大小”定义为鼠标向下(在窗口上合适的调整轨迹上)与其对应的鼠标点击事件之间发生的调整大小,而不考虑用户在按住鼠标按钮的同时在这两个端点之间可能会做出的任何暂停 $ npm install resizeend 或添加到您的页面: <script src="https://raw.githubusercon

我正在寻找一种方法来检测窗口调整最后的mouseup事件(通过拖动完成)。(AFAICT,此事件不会被
$(窗口)
$(文档)
上的
调整大小
处理程序拾取)

PS:出于我的目的,可以将“拖动调整大小”定义为鼠标向下(在窗口上合适的调整轨迹上)与其对应的鼠标点击事件之间发生的调整大小,而不考虑用户在按住鼠标按钮的同时在这两个端点之间可能会做出的任何暂停

$ npm install resizeend
或添加到您的页面:

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

我无法让某些东西100%正常工作。但这有点奏效。 计划是每毫秒检查一个特定的像素(这里我检查调整大小的中间部分,在开始和结束时,调整大小通常小于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);
    }
};
let resizeTimer;
设w=0;
设ww=100;
设t=新日期();
t=t.getTime();
设tt=新日期();
设d=0;
设ms=0;
window.onresize=函数(){
ww=w;
w=窗宽
d=w1.5){clearTimeout(resizeTimer);
resizeTimer=setTimeout(函数(){console.log(“触发器”)},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))};
var a,b=0,c=100,d=新日期;d=d.getTime();var e=新日期,f=0,g=0;window.onresize=function(){c=b;b=window.innerWidth;f=bf/g&(clearTimeout(a),a=setTimeout(function(){console.log(“trigger”)},210));

IE有一个
resizeEnd()
事件,但您需要更多跨浏览器的内容。我认为当前的最佳实践是等待浏览器“停止调整大小”,如“你已经放下鼠标,但在x个时间段内没有对它做任何事情。”当该时间到期时,你可以引发一个事件。看这里的例子:四年,没有人有答案?任何人任何人布勒?
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))};