js滚动事件和兼容

都说IE8是做兼容的分水岭,没想FF也有与别人不一样的时候,给FF,IE两位小祖宗递茶。

判断IE678的小技巧

!-[1,] 如果返回true就是IE678。因为IE678会认为[1,][1,undefined],其他浏览器会所谓是[1]。so接下来你懂的。

事件绑定

addEventListener,传三个参数,第一个为事件名称(不带‘on’),第二个为事件函数,第三个为是否捕获,默认false。不兼容IE678,所以要用attachEvent,传两个参数,第一个事件名称(带“on”!),第二个事件函数(注意于前面相比没有第三个参数哦)。相对应的事件解绑removerEventListenerdetachEvent

禁止冒泡

e.cancelBubble = true查了一波资料,发现这本来是IE专属的功能,但其他浏览器也实现了,但不是标准,未来可以除掉???所以用stopPropagation()方法这个标准的来代替吧。

阻止默认事件

e.preventDefault(),不兼容IE678,IE678要用e.returnValue = false

鼠标滚动事件

在这个事件兼容中我看到了FF的任性。。。mousewheel事件在非FF中有用,FF要用DOMMouseScroll代替。而且,与之相对应的判断鼠标滚轮滚上还是滚下的属性也不同。mousewheel的是e.wheelDelta,向下滚为-120的倍数,向上120的倍数。DOMMouseScrolle.detail,向下滚为3,向上为-3。

好了,根据上面这些知识来封装个函数兼容IE678和FF,代码?自己搞!

完。

发表评论

电子邮件地址不会被公开。 必填项已用*标注