⑴ 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;">