前言:
目前我们对“html兼容ie”都比较关怀,我们都需要学习一些“html兼容ie”的相关资讯。那么小编同时在网摘上网罗了一些关于“html兼容ie””的相关知识,希望看官们能喜欢,看官们快快来了解一下吧!1. 事件监听与解绑IE:
监听事件:obj.attachEvent("onXXX",fn);
解除事件:obj.detachEvent("onXXX",fn);
标准监听事件:obj.addEventListener("type",fn,false);
标准解除事件:obj.removeEventListener("type",fn,false);
2. 计算非内嵌样式
IE:obj.currentStyle.attr 或者 obj.currentStyle[attr]
其他:
document.defaultView.getComputedStyle(obj,null).attr//或者document.defaultView.getComputedStyle(obj,null)[attr]3. 获取页面滚动条距离顶端的距离
关于获取浏览器的滚动条距离顶端的距离,有下面两种方法,存在兼容性问题:
document.body.scrollTop 或document.documentElement.scrollTop
(1)文档处于混杂模式下:
所有浏览器使用document.body.scrollTop获取,但一般文档都是会有文档类型声明的,因此这种情况几乎不存在。
(2)文档处于标准模式下:
chrome和safari:使用document.body.scrollTop获取
IE:使用document.documentElement.scrollTop获取
考虑浏览器的兼容性:
let scrollTop = document.documentElement.scrollTop || 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) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent('on' + type, handler); } else { element['on' + type] = handler; } }, // 删除句柄 removeHandler: function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.detachEvent) { 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) { event.preventDefault(); } else { event.returnValue = false; } }, //阻止事件冒泡 stopPropagation: function(event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } }}
欢迎关注。
标签: #html兼容ie