给大家发一些原生JS处理兼容性的解决方案
1.获取滚动条滚动的距离
var sTop = document.documentElement.scroolTop || document.body.scrollTop;
2.获取非行间样式
IE:currentStyle[attr]; 标准:getComputedStyle[attr]; function getStyle(obj,attr){ if(currentStyle){ return obj.currentStyle[attr]; } else{ return getComputedStyle(obj,false)[attr]; } }
3.获取事件对象
var e = e || event;
4.获取键盘信息
var code = e.keyCode || e.which;
5.阻止浏览器的默认行为
function prevent(e){ if(e.preventDefault){ e.preventDefault(); } else{ e.returnValue = false; }}
6.阻止事件冒泡
e.stopPropagation?e.stopPropagation():e.cancelBubble = true;
7.事件监听
//绑定addEventListener();attachEvent();//移除removeEventListener();detachEvent();
8.事件解绑
removeEventListener();detachEvent();
9.获取事件源
e.target = e.srcElement;
10.网页可视区域兼容
window.innerHeight || document.documentElement.clientHeightwindow.innerWidth || document.documentElement.clientWidth
11.鼠标滚轮判断(别处摘抄)
/*对于mousedown 和mouseup 事件来说,则在其event 对象存在一个button 属性,表示按下或释放的按钮。DOM的button 属性可能有如下3 个值:0 表示主鼠标按钮,1 表示中间的鼠标按钮(鼠标滚轮按钮),2 表示次鼠标按钮。在常规的设置中,主鼠标按钮就是鼠标左键,而次鼠标按钮就是鼠标右键。IE8 及之前版本也提供了button 属性,但这个属性的值与DOM 的button 属性有很大差异。 0:表示没有按下按钮。 1:表示按下了主鼠标按钮。 2:表示按下了次鼠标按钮。 3:表示同时按下了主、次鼠标按钮。 4:表示按下了中间的鼠标按钮。 5:表示同时按下了主鼠标按钮和中间的鼠标按钮。 6:表示同时按下了次鼠标按钮和中间的鼠标按钮。 7:表示同时按下了三个鼠标按钮。*/getButton: function(event){ if (document.implementation.hasFeature("MouseEvents", "2.0")){ return event.button; } else { switch(event.button){ case 0: case 1: case 3: case 5: case 7: return 0; case 2: case 6: return 2; case 4: return 1; } }}
原生JS是根本,勿忘初心,方得始终