js 检测鼠标滚轮上下滚动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 检测鼠标滚轮上下滚动相关的知识,希望对你有一定的参考价值。
js 检测鼠标滚轮上下滚动 初始值i为1 滚动一下 i+1 直到i=4 为止 滚轮往上滚时 i开始减一 减到1为止
如果能写JQuery就更好了
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) int delta; //一次滑动量 TCHAR szMessage[120]; static int time; //最后一次滚动时的时间值 static int start; //第一次滚动前的刻度值 static int index=10; //最后一次滚动后的刻度值 static BOOL bStart=FALSE; //是否第一次滚动鼠标 switch (message) case WM_CREATE: SetTimer(hWnd,500,500,NULL); break; case WM_MOUSEWHEEL: delta=GET_WHEEL_DELTA_WPARAM(wParam); if(delta>0) int line=delta/40; if(line+index<=100) //放大位图逻辑 if(!bStart) start=index; //记录第一次刻度值 index+=line; //刷新最近刻度值 _stprintf(szMessage,_T("向上滚动%d行\n"),line); time=GetTickCount(); bStart=TRUE; OutputDebugString(szMessage); else int line=-delta/40; if(index-line>=0) //缩小位图逻辑 if(!bStart) start=index; index-=line; _stprintf(szMessage,_T("向下滚动%d行\n"),line); time=GetTickCount(); //刷新当前时间值 bStart=TRUE; OutputDebugString(szMessage); break; case WM_TIMER: int tick=GetTickCount(); if(bStart && tick-time>500) //如果前后两次滚动事件超过半秒,开始绘图 bStart=FALSE; int sub=index-start; //sub为正放大位图,为负缩小位图 TCHAR szMess[100]; _stprintf(szMess,_T("尺寸改变了%d个单位 当前刻度%d\n"),sub,index); OutputDebugString(szMess); //执行绘图 break; case WM_DESTROY: ::KillTimer(hWnd,500); PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); return 0;
参考技术A
onmousewheel
JS怎么禁止鼠标滚轮的单击 IE下! 注意是滚轮去单击 而不是滚动!
参考技术A
楼上哥们的代码原理没有错,
但是a标签的禁用要另写代码,
因为,事件的冒泡原理,
所有事件最终都会冒泡到document对象,但是
a标签
的单击和href跳转
等到冒泡到
document的时候
已经触发了,而且
document
的鼠标按下事件
return
false;取消的也只是
document.onmousedown
事件,
所以,要在a标签上禁止鼠标中键
就要:
在页面的所有a标签上
绑定鼠标按下事件
并判断按下的是否是鼠标中键,
然后取消掉该元素的默认事件,从而使其无效。
我的意思是:楼上哥们的代码你要用,并且你还要单独再写一个
针对a标签鼠标中键的代码。
以上是关于js 检测鼠标滚轮上下滚动的主要内容,如果未能解决你的问题,请参考以下文章
JS怎么禁止鼠标滚轮的单击 IE下! 注意是滚轮去单击 而不是滚动!
网页不能用鼠标滚轮控制滚动条 我鼠标滚轮上下滚动。。但网页没反应。这是怎么回事。。怎么修复。。
ulli鼠标滚轮水平滚动
怎样设置div内容鼠标滚轮滚动
用鼠标滚轮拖动滚动条的时候老自动往上去
WPF是不是有鼠标滚轮上下滚动事件