做前端的最难的就是要做的每种浏览器都兼容,往往我们只能做到其中一种是兼容,而且就一种浏览器而言也是有不同的版本,也并非是每个版本都是能够做到兼容,今天就遇到了一个很闹心的问题,同样的一段代码,在ie上能够完美运行,在谷歌上却不好使了,下面带大家看看鼠标的滚轮事件。
原生的滚轮事件:火狐与其他浏览器使用了不同的事件
/*
* 滚轮事件只有firefox比较特殊,使用DOMMouseScroll; 其他浏览器使用mousewheel;
*
*/
// firefox
document.body.addEventListener("DOMMouseScroll", function(event) {
var direction= event.detail && (event.detail > 0 ? "mousedown" : "mouseup");
console.log(direction);
});
// chrome and ie
document.body.onmousewheel = function (event) {
event = event || window.event;
var direction = event.wheelDelta && (event.wheelDelta > 0 ? "mouseup" : "mousedown");
console.log(direction);
};
使用jquery兼容后的事件
// jquery 兼容的滚轮事件
$(document).on("mousewheel DOMMouseScroll", function (e) {
var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) || // chrome & ie
(e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1)); // firefox
if (delta > 0) {
// 向上滚
console.log("wheelup");
} else if (delta < 0) {
// 向下滚
console.log("wheeldown");
}
});