⑴ 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如何判斷滑鼠滾輪事件分析
我們都見到過這些效果,用滑鼠滾輪實現某個表單內的數字增加減少操作,或者滾輪控制某個按鈕的左右,上下滾動。這些都是通過js對滑鼠滾輪的事件監聽來實現的。今天這里介紹的是一點簡單的js對於滑鼠滾輪事件的監聽。先分析原理:我們是通過判斷滑鼠滾動的獲取一個值,然後根據這個值判斷滾動的方向。然而不同瀏覽器有不同的獲取方法,所以要分瀏覽器寫方法。 不同瀏覽器不同的事件 首先,不同的瀏覽器有不同的滾輪事件。主要是有兩種,onmousewheel(firefox不支持)和DOMMouseScroll(只有firefox支持),關於這兩個事件這里不做詳述,想要了解的朋友請先去了解滑鼠滾輪(mousewheel)和DOMMouseScroll事件。過程中需要添加事件監聽:兼容firefox採用addEventListener監聽。 js返回數值判斷滾輪上下 判斷滾輪向上或向下在瀏覽器中也要考慮兼容性(IE、Opera、Safari、Firefox、Chrome)中Firefox 使用detail,其餘四類使用wheelDelta;兩者只在取值上也是不一致,但是含義一致,detail與wheelDelta只各取兩個 值,detail只取±3,wheelDelta只取±120,其中正數表示為向上,負數表示向下。 具體的代碼如下所示: <label for=wheelDelta滾動值:</label(IE/Opera)<input type=text id=wheelDelta/ <label for=detail滾動值:(Firefox)</label<input type=text id=detail/ <script type=text/javascript var scrollFunc=function(e){ e = e || window.event; var t1=document.getElementById(wheelDelta); var t2=document.getElementById(detail); if(e.wheelDelta){//IE/Opera/Chrome t1.value=e.wheelDelta; }else if(e.detail){//Firefox t2.value=e.detail;}} /*監聽事件*/
⑶ js事件(event)知識整理
JS事件知識整理
一、概述
JavaScript中的事件是瀏覽器與用戶交互的一種方式。當用戶進行某些操作,如點擊按鈕、移動滑鼠、載入頁面等,會觸發相應的事件,並執行與之關聯的函數。事件處理是JavaScript中非常重要的部分。
二、事件類型
JavaScript中有多種事件類型,常見的事件類型包括:
1. 滑鼠事件:如click、mouseover、mousedown等。
2. 鍵盤事件:如keydown、keyup等。
3. 表單事件:如submit、focus、blur等。
4. 滾動事件:如scroll。
5. 載入事件:如load。
三、事件處理
事件處理涉及到事件監聽器和事件處理器。
1. 事件監聽器:用於監聽特定的事件,當該事件被觸發時,會執行相應的函數。可以通過addEventListener方法來添加事件監聽器。
示例代碼:
javascript
element.addEventListener {
// 事件處理代碼
});
2. 事件處理器:事件觸發時執行的函數。可以在事件監聽器中定義。
事件處理器中可以訪問到Event對象,該對象包含了與事件相關的各種屬性和方法。通過Event對象,我們可以獲取事件的詳細信息,如觸發事件的元素、事件類型、滑鼠位置等。
四、事件流
事件流描述的是事件的傳播過程。一個事件發生後,會通過三個階段:捕獲階段、目標階段和冒泡階段。添加事件監聽器時,可以選擇是否在捕獲階段或冒泡階段處理事件。
五、移除事件監聽
使用removeEventListener方法可以移除事件監聽器。如果不再需要某個事件的監聽,應該及時移除,避免不必要的資源浪費和潛在的錯誤。
示例代碼:
javascript
element.removeEventListener;
六、總結
JavaScript的事件處理是前端開發中的基礎技能之一,理解事件的類型、處理機制以及事件流的過程對於開發交互豐富的網頁應用至關重要。通過熟練掌握事件處理,可以為用戶提供更加流暢和自然的體驗。
⑷ 什麼用javascript讓一個對象同時監聽滑鼠單擊和滑鼠雙擊事件
<input name="test" id="test" type="button" onmouseup="c()" value="單雙擊測試"/>
注意不是onclick,是內onmouseup
var count = 0;
var timer ;
function c(){
count ++;
timer = window.setTimeout(function(){
if(count==1) alert("單擊容");
else alert("雙擊");
window.clearTimeout(timer);
count=0;
},300)
}
⑸ JS 判斷滑鼠滾輪滑動距離
如果使用jquery的話,可以這樣寫:
$(window).bind("scroll",function(){
vartop=$(this).scrollTop();//當前窗口的滾動距離
});
如果使用原生js,可以這樣寫(摘自網上的):
/**
*獲取<ahref="https://www..com/s?wd=%E6%BB%9A%E5%8A%A8%E6%9D%A1&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">滾動條</a>距離頂端的距離
*@return{}支持IE6
*/
functiongetScrollTop(){
varscrollPos;
if(window.pageYOffset){
scrollPos=window.pageYOffset;}
elseif(document.compatMode&&document.compatMode!='BackCompat')
{scrollPos=document.documentElement.scrollTop;}
elseif(document.body){scrollPos=document.body.scrollTop;}
returnscrollPos;
}