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