1.监视和解除绑定事件IE:

接收事件:obj.attachEvent('onXXX ',fn);

关闭事件:obj.detachEvent('onXXX ',fn);

标准接收事件:obj.addeventlistener(“类型”、fn、false);

标准释放事件:obj.removeeventlistener ('type ',fn,false);

2.计算非内嵌样式

Ie: obj.curren或obj.currentStyle[attr]

其他:

Document.de(obj,null)。attr

//或

Document.de(obj,null)[attr]

3.获取与页面滚动条顶部的距离。

有两种方法可以获取与浏览器滚动条顶部的距离,并且存在兼容性问题。

Document.body.scrollTop或document.documen

(1)文档处于混合模式。

所有浏览器都使用document.body.scrollTop导入,但一般文档具有文档类型声明,因此几乎不存在。

(2)文档处于标准模式下:

chrome和safari:使用document.body.scrollTop获取

IE:使用document.documen获取

考虑浏览器的兼容性:

let scrollTop = document.documen || document.body.scrollTop;

4. IE和其他浏览器中的事件对象event

封装一个获取当前事件的派生对象的函数

getEventTarget

若使用DOM0级绑定事件的方式,那么event是作为window对象的属性存在的

IE中,既可以使用window.event,也可以使用函数的第一个参数

在其他浏览器中,event是事件的参数

在IE中,引发事件的对象是由event.srcElement获得;在其他浏览器中,引发事件的对象是由event.target获得。

5. 取消事件冒泡

在IE中,使用 event.cancelBubble = true 来取消事件冒泡。

在其他浏览器中,使用stopPropagation()方法来取消事件冒泡。

6. 取消事件的默认行为

事件的默认行为:例如<a>的点击事件的默认行为就是跳转链接

在IE中,使用event.returnValue = false来取消事件的默认行为。

在其他浏览器中,使用preventDefault()方法来取消事件的默认行为。

把上述几个封装在一起:

var eventUtil = {
// 添加句柄
addHandler: function(element, type, handler) {
if ) {
element.addEventListener(type, handler, false);
} else if ) {
element.attachEvent('on' + type, handler);
} else {
element['on' + type] = handler;
}
},
// 删除句柄
removeHandler: function(element, type, handler) {
if ) {
element.removeEventListener(type, handler, false);
} else if ) {
element.detachEvent('on' + type, handler);
} else {
element['on' + type] = null;
}
},
//事件
getEvent: function(event) {
return event ? event : window.event;
},
//类型
getType: function(event) {
return event.type;
},
//目标元素
getElement: function(event) {
return event.target || event.srcElement;
},
//阻止默认事件
preventDefault: function(event) {
if ) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
//阻止事件冒泡
stopPropagation: function(event) {
if ) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
}

欢迎关注。

1.《部分原生JavaScript兼容性问题解决方案,IE已经被抛弃,走好不送》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《部分原生JavaScript兼容性问题解决方案,IE已经被抛弃,走好不送》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.cxvn.com/gl/djyxgl/195740.html