mousewheel 取消_jquery mousewheel:检测车轮何时停止?

mousewheel 取消_jquery mousewheel:检测车轮何时停止?以下是如何实现您自己的车轮停止事件 initialiseth newMap vardeltaXEnd false vardeltaYEnd false varpreviousS Object previousSwip timeStamp 0 previousSwip deltaX 0 p

以下是如何实现您自己的车轮停止事件。

//initialise the new variables

var wheelMap = new Map;

var deltaXEnded = false;

var deltaYEnded = false;

var previousSwipe = Object;

previousSwipe.timeStamp = 0;

previousSwipe.deltaX = 0;

previousSwipe.deltaY = 0;

var wheelstart = false;

为创建新的事件侦听器

车轮止动器

事件

我们将从

NormalWheelEventCallbackFunction()。

var wheelstop = new Event(“wheelstop”);

接下来,我们将在调度此事件的情况下定义回调,然后将事件添加到窗口对象。

function wheelstopcallback(event){

wheelstart = false;

console.log(“wheel event has ended”);

}

window.addEventListener(“wheelstop”, wheelstopcallback.bind(this));

现在我们定义了普通的车轮事件监听器以及这个监听器将使用的回调…

window.addEventListener(“wheel”, normalWheelEventCallbackFunction.bind(this));

车轮事件回调函数

function normalWheelEventCallbackFunction(event){

if(previousSwipe.timeStamp !== 0){

if(event.timeStamp – previousSwipe.timeStamp < 1000)

wheelMap.set(event.timeStamp, event);

else

wheelMap.clear();

}

else{previousSwipe.timeStamp = event.timeStamp;}

if(event.deltaX > 2 && event.deltaX > previousSwipe.deltaX){

//forward

wheelstart = true

}

else if(event.deltaX < -2&& event.deltaX < previousSwipe.deltaX){

//backward

wheelstart = true;

}

else if(event.deltaY > 2 && event.deltaY > previousSwipe.deltaY){

wheelstart = true;

}

else if(event.deltaY < 2 && event.deltaY < previousSwipe.deltaY){

wheelstart = true;

}

if(

((event.deltaX === 1 || event.deltaX === 0 || event.deltaX === -1) && ((event.deltaX > 0 && event.deltaX < previousSwipe.deltaX) || (event.deltaX < 0 && event.deltaX > previousSwipe.deltaX)) && wheelstart)

|| (wheelstart && (event.deltaX === 0 && previousSwipe.deltaX === 0))

)

{

deltaXEnded = true;

console.log(“deltaXEnded”);

}

if(

(((event.deltaY === 1 || event.deltaY === 0 || event.deltaY === -1) && ((event.deltaY > 0 && event.deltaY < previousSwipe.deltaY) || (event.deltaY < 0 && event.deltaY > previousSwipe.deltaY))) && wheelstart)

|| (wheelstart && (event.deltaY === 0 && previousSwipe.deltaY === 0))) {

deltaYEnded = true;

console.log(“deltaYEnded”);

}

if(deltaXEnded && deltaYEnded){

deltaXEnded = false;

deltaYEnded = false;

window.dispatchEvent(wheelstop);

}

previousSwipe.deltaX = event.deltaX;

previousSwipe.deltaY = event.deltaY;

}

这可能有一些错误,但在大多数情况下,逻辑是相当合理的,我建议您回退,但是如果您需要捕获每一个发送的单轮事件,因为它可能在发送“车轮停止”事件后有一些。

最后,确保并实现一个处理程序,如果它被click事件中断,从而结束wheel事件…

function wheelstopdispatch(){

if(wheelstart)

window.dispatchEvent(wheelstop);

}

window.addEventListener(“click”, wheelstopdispatch);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217208.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:06
下一篇 2026年3月18日 上午10:06


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号