⑴ js,鼠标上下滑轮或者拉动滚动条触发事件
window.onmousewheel=function(){//触发滚轮事件
}
window.onscroll=function(){//滚动条事件
}
//其实你的问题直接使用判断滚动条应该就可以了,但是版如果一定要拖动滚动条才执行权事件,我们可以通过获取鼠标位置来模拟
vara=document.getElementsByTagName("html")[0];
window.onmousemove=function(){
//一般默认滚动条12px宽,当鼠标位于浏览器窗口右边12px内按下鼠标可以视为拖动滚动条
if(innerWidth-event.clientX<12){
a.onmousedown=function(){
console.log(1);
}
}else{
a.onmousedown=null;
}
}
⑵ js 键盘监听页面中一个div块儿的左右滚动条,但是必须先鼠标点击一下div才可以监听,怎么解决取消点击
不知道你使用的是什么方式绑定的监听事件。
假如使用 addEventListener,那就使用removeListener 来移除。
案例如下
<!DOCTYPEHTML>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
<title>事件监听与移除</title>
</head>
<body>
<divid="text"style="width:300px;height:300px;background-color:#ccc">
点击按钮注册click事件
</div>
<inputid="btn1"type="button"value="开始监听事件">
<inputid="btn2"type="button"value="移除监听事件">
<script>
var$=function(obj){
returndocument.querySelector(obj);
}
varn=0;
functiontextFn(){
this.textContent="点击了"+(++n)+"次";
}
$('#btn1').onclick=function(){
console.log($('#text'));
$('#text').addEventListener('click',textFn);
$('#text').textContent="开始监听click事件";
};
$('#btn2').onclick=function(){
n=0;
$('#text').removeEventListener('click',textFn);
$('#text').textContent="移除监听click事件,恢复到"+n+"次";
};
</script>
</body>
</html>
⑶ js 检测鼠标滚轮上下滚动
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; }
⑷ 用js给滚轮事件onmousewheel添加过程
MFC鼠标滚轮消息WM_MOUSEWHEEL
使用WM_MOUSEWHEEL
需要把CWnd设定为Focus
ON_WM_MOUSEWHEEL( )
CWnd::OnMouseWheel
afx_msg BOOL OnMouseWheel( UINT nFlags, short zDelta, CPoint pt );
返回值:如果允许鼠标轮滚动,则返回非零值;否则返回0。
参数:
nFlags 指明是否按下了虚拟键。这个参数可以是下列值的组合:
· MK_CONTROL 如果CTRL键被按下,则设置此位。
· MK_LBUTTON 如果鼠标左键被按下,则设置此位。
· MK_MBUTTON 如果鼠标中键被按下,则设置此位。
· MK_RBUTTON 如果鼠标右键被按下,则设置此位。
· MK_SHIFT 如果SHIFT键被按下,则设置此位。
zDelta 指明了旋转的距离。zDelta值以WHEEL_DELTA,即120的倍数或部分的形式表达。小于零的数表明往回滚动(向着用户),而大于零的数表明滚向远处(离开用户)。用户可以在鼠标软件中改变滚轮设置以反转这种响应。有关这个参数的更多信息参见说明部分。
pt 指定了光标的x和y轴坐标。这些坐标通常是相对于窗口的左上角的。
⑸ js中如何禁用鼠标滚轮事件急,在线等!
如果使用的是IE直接使用下面代码就可以了,在body的onmousewheel事件中return false
<body onmousewheel="return false;">