在body注册一下滑轮事件

<body onload="win_onload();"></body>

然后JS代码如下:

 function win_onload() {
////注册按键事件
//document.onkeydown = keydown; /*注册事件*/
if(document.addEventListener){
document.addEventListener('DOMMouseScroll',scrollFunc,false);
}//W3C
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari
} //滑轮事件,上=120,下=-120
var scrollFunc=function(e){
var direct=;
e=e || window.event;
//上滑动
if (e.wheelDelta == ) {//IE/Opera/Chrome
//执行事件
selectProvNode();
return false;
}
//下滑动
if (e.wheelDelta == -) {//Firefox
//执行事件
selectNextNode();
return false;
}
} ////按键事件
//function keydown() {
// //上
// if (event.keyCode == 188) {
// //执行事件
// selectProvNode();
// return false;
// }
// //下
// if (event.keyCode == 190) {
// //执行事件
// selectNextNode();
// return false;
// }
//}

但是这样写会有一个缺点就是滑轮一次滑动力度过大会导致事件的多次执行,就算一次只按一格也会执行两次,问题在于

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari

这里window和document同时注册了事件然后执行了两次,避免这样的方法,可以加入全局变量判断,执行完一个JS事件后调用回调函数改变标记状态,然后就不会多次执行了,代码如下:

<div id="form1" class="bg">
第一个
</div>
<div id="form2" class="bg2">
第二个
</div>
<div id="form3" class="bg3">
第三个
</div> <script>
$(document).ready(function () {
var height = $(window).height();
var width = $(window).width();
var body;
if (navigator.userAgent.indexOf("Firefox") > 0 || navigator.userAgent.indexOf("MSIE") > 0) {
body = document.documentElement;
} else {
body = document.body;
}
var isFinish = true;
var i = 1;
var scrollFunc = function (e) {
if (isFinish) {
var scrollTop = body.scrollTop;
e = e || window.event;
if (e.wheelDelta < 0) {
scrollDown(i);
} else {
scrollUp(i);
}
} };
var scrollDown = function (height) {
isFinish = false;//判断标记,避免多次执行
$('#form' + i + '').animate({ height: '0px'}, 'slow', function () {
$('#form' + i + '').css('display', 'none');
var temp = i + 1 > 3 ? 1 : i + 1;
$('#form' + temp + '').animate({ height: '100%'}, 'slow');
$('#form' + temp + '').css('display', 'block');
console.log(" wheelDelta:" + height);
i = temp;
isFinish = true;//判断标记,避免多次执行
});
}; var scrollUp = function (height) {
isFinish = false;//判断标记,避免多次执行
$('#form' + i + '').animate({ height: '0px' }, 'slow', function () {
$('#form' + i + '').css('display', 'none');
var temp = i - 1 < 1 ? 3 : i - 1;
$('#form' + temp + '').animate({ height: '100%'}, 'slow');
$('#form' + temp + '').css('display', 'block');
console.log(" wheelDelta:" + height);
i = temp;
isFinish = true;//判断标记,避免多次执行
});
}; if (navigator.userAgent.indexOf("Firefox") > 0) {
if (document.addEventListener) {
document.addEventListener('DOMMouseScroll', scrollFunc, false);
}
} else {
document.onmousewheel = scrollFunc;
}
});
</script>

JS鼠标滑轮事件的写法和按键的事件的更多相关文章

  1. js鼠标滑轮滚动事件绑定(兼容主流浏览器)

    /** Event handler for mouse wheel event. *鼠标滚动事件 */ var wheel = function(event) { var delta = 0; if ...

  2. js鼠标滑轮侧边广告(仅IE可用)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结

    史上最全的CSS hack方式一览 2013年09月28日 15:57:08 阅读数:175473 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我 ...

  4. JS鼠标事件大全 推荐收藏

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  5. 问题记录:JavaFx 鼠标滑轮滚动事件监听!

    问题描述: 在listview的item里面添加鼠标拖拽排序功能.代码如下: setOnMouseDragged(event -> { //设定鼠标长按0.3秒后才可拖拽 防止误操作 isCan ...

  6. js鼠标事件大全

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  7. JS 鼠标事件大全

    一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...

  8. js 鼠标事件的抓取代码

    js 鼠标事件的抓取代码,分享给大家. 1.通过ele.setCapture();设置鼠标事件的抓取. 2,应用可以通过单.双击文字来获取时间. <html> <head> & ...

  9. js鼠标事件

    今天遇到一个非常奇怪而又搞笑的事情:给一个a标签添加一个鼠标移动上时给一个事件,我给其添加的是一个onMouseMove事件,结果在IE6 7 8 9和GOOLE中都很正常,结果在Firox中出现问题 ...

随机推荐

  1. 【第六篇】javascript显示当前的时间(年月日 时分秒 星期)

    不多说自己上代码 这是我开始学javascript写的,现在发出来 <span id="clock" ></span> function time() { ...

  2. BZOJ 1010 玩具装箱

    斜率优化. 事实上是选一个大于某个数的最小斜率.维护下凸壳. #include<iostream> #include<cstdio> #include<cstring&g ...

  3. LeetCode Longest Common Prefix 最长公共前缀

    题意:给多个字符串,返回这些字符串的最长公共前缀. 思路:直接逐个统计同一个位置上的字符有多少种,如果只有1种,那么就是该位是相同的,进入下一位比较.否则终止比较,返回前缀.可能有一个字符串会比较短, ...

  4. scala学习笔记(9):Scala函数(2)

    1 指令式编程&函数式编程 指令式:imperative 风格编程.指令式风格,是你常常使用像 Java,C++和 C 这些语言里用的风格,一次性发出一个指令式的命令,用循环去枚举,并经常改变 ...

  5. js实现密码加密

    http://www.cnblogs.com/mofish/archive/2012/02/25/2367858.html 1.base64加密 在页面中引入base64.js文件,调用方法为: &l ...

  6. HDU 4540 威威猫系列故事——打地鼠

    威威猫系列故事--打地鼠 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Su ...

  7. N元数组的子数组之和的最大值

    题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...

  8. [Everyday Mathematics]20150303

    设 $f$ 是 $\bbR$ 上的 $T$ - 周期函数, 试证: $$\bex \int_T^\infty\frac{f(x)}{x}\rd x\mbox{ 收敛 } \ra \int_0^T f( ...

  9. hdu 5253 最小生成树

    赤裸裸最小生成树,没啥说的,我用kruskal过的 /* * Author : ben */ #include <cstdio> #include <cstdlib> #inc ...

  10. linux 为开机菜单加密码·

    首先是在/boot/grub/menu.lst 里面添加密码的,但是需要是加密过后的,否则人家直接跑到你的menu.lst里面查看密码不就行了.... 于是,可以使用grub提供的md5加密功能: # ...