火狐浏览器不支持html5,这样写 火狐浏览器不支持?

这篇博客介绍了如何处理浏览器之间的滚轮事件不一致问题。通过检测浏览器的事件模型和支持的滚轮事件类型,实现了一个兼容函数`addWheelListener`,确保在不同浏览器上都能正确监听和处理滚轮事件。该函数考虑了`DOMMouseScroll`、`mouseWheel`和`wheel`等事件,并提供了标准化的事件对象,以适应旧版Firefox和现代浏览器的需求。
摘要由CSDN通过智能技术生成

DOMMouseScroll 是FF支持的独有滚轮事件,mouseWheel是以前IE和使用webkit内核浏览器支持的滚轮事件,现在的最新的现代浏览器支持wheel事件。

下面是MDN提供的滚轮事件跨浏览器兼容处理:

(function(window,document) {

var prefix = "", _addEventListener, support;

// detect event model

if ( window.addEventListener ) {

_addEventListener = "addEventListener";

} else {

_addEventListener = "attachEvent";

prefix = "on";

}

// detect available wheel event

support = "onwheel" in document.createElement("div") ? "wheel" : // Modern browsers support "wheel"

document.onmousewheel !== undefined ? "mousewheel" : // Webkit and IE support at least "mousewheel"

"DOMMouseScroll"; // let's assume that remaining browsers are older Firefox

window.addWheelListener = function( elem, callback, useCapture ) {

_addWheelListener( elem, support, callback, useCapture );

// handle MozMousePixelScroll in older Firefox

if( support == "DOMMouseScroll" ) {

_addWheelListener( elem, "MozMousePixelScroll", callback, useCapture );

}

};

function _addWheelListener( elem, eventName, callback, useCapture ) {

elem[ _addEventListener ]( prefix + eventName, support == "wheel" ? callback : function( originalEvent ) {

!originalEvent && ( originalEvent = window.event );

// create a normalized event object

var event = {

// keep a ref to the original event object

originalEvent: originalEvent,

target: originalEvent.target || originalEvent.srcElement,

type: "wheel",

deltaMode: originalEvent.type == "MozMousePixelScroll" ? 0 : 1,

deltaX: 0,

deltaY: 0,

deltaZ: 0,

preventDefault: function() {

originalEvent.preventDefault ?

originalEvent.preventDefault() :

originalEvent.returnValue = false;

}

};

// calculate deltaY (and deltaX) according to the event

if ( support == "mousewheel" ) {

event.deltaY = - 1/40 * originalEvent.wheelDelta;

// Webkit also support wheelDeltaX

originalEvent.wheelDeltaX && ( event.deltaX = - 1/40 * originalEvent.wheelDeltaX );

} else {

event.deltaY = originalEvent.deltaY || originalEvent.detail;

}

// it's time to fire the callback

return callback( event );

}, useCapture || false );

}

})(window,document);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值