javascript鼠标滚动事件中出现的问题
2016-03-25 16:00
561 查看
</pre>滚动事件精简代码:<p></p><p></p><pre name="code" class="javascript">//鼠标滚轮事件 var box = document.getElementById("box"); var scrollFn = function(e){ e = e || window.event; if(e.wheelDelta){ // e.wheelDelta 兼容IE-Opera-Chrome if(e.wheelDelta > 0){ //如果 e.wheelDelta > 0 在IE-Opera-Chrome下代表向上滚动“而火狐下代表向下滚动” console.log("IE-Opera-Chrome向上滚动"); }else{ console.log("IE-Opera-Chrome向下滚动"); //e.wheelDelta < 0 则反之 } }else if(e.detail){ // e.detail 兼容Firefox if(e.detail < 0){ // 为了兼容Firefox 和 IE-Opera-Chrome 在火狐下需要时应反着判断 e.detail < 0 console.log(e.detail+"Firefox向上滚动,"); }else{ console.log(e.detail+"Firefox向下滚动,"); } } } //box为 “局部块” 的临时命名(需根据需求命名更改) box.onmousemove = function(){ /*绑定事件*/ if(document.addEventListener){ document.addEventListener('DOMMouseScroll',scrollFn,false); // 绑定 Firefox 滚动事件 } window.onmousewheel=document.onmousewheel=scrollFn;// 绑定 IE-Opera-Chrome 滚动事件 } box.onmouseleave=function(){ /*解除事件*/ if(document.addEventListener){ document.removeEventListener('DOMMouseScroll',scrollFn,false);//解除 Firefox 滚动事件 } window.onmousewheel=document.onmousewheel=null;// 解除 IE-Opera-Chrome 滚动事件 }看似完成了滚动:
有时候我们会碰到这样的情况:
body内容超出了屏幕高度,自动出现滚动条,那么我们在滚动局部内容时,会同时触发到body的浏览器自带滚动,怎么办???
----------------------------------------------------------------------------------------------------------------------------------------------------------
解决办法如下:
IE-Opera-Chrome禁止浏览器默认滚动条:
getBody.onmousewheel=function(){ //IE/Opera/Chrome禁止body滚动 return false; }
IE-Opera-Chrome “解除”禁止浏览器默认滚动条:
getBody.onmousewheel=function(){ //IE/Opera/Chrome 解除body滚动条 return true; }
Firefox禁止浏览器默认滚动:
首先定义一个全局变量:
// 禁止火狐body默认滚动事件 var bodyMoveFun = function(e){ e.preventDefault(); }再绑定禁止事件函数:
document.addEventListener("DOMMouseScroll",bodyMoveFun,false); //Firefox禁止body滚动
Firefox “解除”
禁止浏览器默认滚动:
document.removeEventListener('DOMMouseScroll',bodyMoveFun,false);//解除Firefox禁止body滚动
错误方法如下:
如果写成这样将会无法绑定和解除:
document.addEventListener("DOMMouseScroll",function(e){ <span style="white-space:pre"> </span>e.preventDefault(); },false);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 微软无线镭射简报鲨8000激光笔记本鼠标 - (2)
- 在Windows 8.1的IE 11中屏蔽双击放大功能
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法