一、事件冒泡兼容
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
//1.事件冒泡兼容
function el(e) {
e = e || event; //事件对象兼容
if (e.stopPropagation) {
e.stopPropagation()
}
else {
e.cancelBubble = true;
}
}
二、阻止事件默认行为
//2.阻止事件默认行为
function el(e) {
e = e || event; //事件对象兼容
if (e.preventDefault) {
e.preventDefault()
}
else {
e.returnValue = false;
}
}
三、获取事件目标兼容
//3.获取事件目标兼容
function el(e) {
e = e || event; //事件对象兼容
let target = e.target || e.scrElement;
}
四、事件滚轮的兼容
//4.事件滚轮的兼容 (谷歌 ie)和火狐的区别
function el(e) {
e = e || window.event;
let bool = true;
if (ev.wheelDelta) {
bool = ev.wheelDelta > 0 ? true : false; //谷歌和ie
} else {
bool = ev.detail < 0 ? true : false; //火狐
}
}
五、事件监听兼容
//5.事件监听兼容
// addEventListener(event, function, useCapture);
// 默认值为 false, 即冒泡传递,当值为 true 时, 事件使用捕获传递。
var addEvent = (function () {
if (typeof document.addEventListener === 'function') { //只有最新的版本有这个函数,判断浏览器里面有没有这个函数
return function (el, type, fn) {
el.addEventListener(type, fn) //第三个参数默认是false 表示不捕获
}
}
else {
return function (el, type, fn) {
el.attachEvent('on' + type, fn);
}
}
})(); //这种写就是一进去就运行判断