javaScript中一些常见的兼容性问题以及解决方案

本文提供了一系列针对不同浏览器的网页兼容性解决方案,包括滚动条、获取样式、事件对象、阻止事件冒泡、阻止默认行为、事件监听及事件目标对象等方面的兼容性处理方法。

1)滚动条:

document.documentElement.scrollTop||document.body.scrollTop

f11db65b43854200a8522527a07e3e79.png

2) 获取样式兼容

function getStyle(dom, styleName){

return dom.currentStyle?

dom.currentStyle[styleName] :getComputedStyle(dom)[styleName];}


3) 网页可视区域兼容

window.innerHeight || document.documentElement.clientHeight

window.innerWidth || document.documentElement.clientWidth


4) 事件对象兼容

e  = e || window.event;

这里函数传入的参数e,就是事件,浏览器会实时跟踪用户的行为。

如e.screenX、e.screenY、e.offsetX、e.offsetY…这种做法在FireFox、Chrome、Safari等遵循W3C规范的浏览器下是没有问题的。

唯独在IE下是行不通的, IE采用了一种非标准的方式,将事件作为window对象的event属性:window.event、window.event.screenX…


5) 阻止事件冒泡兼容

event.stopPropagation? event.stopPropagation():event.cancelBubble=true;

说明:前者是方法,是标准的写法,后者是属性,赋值true表示阻止,是IE的写法。

解决方法:判断stopPropagation是否存在,如果存在则用标准写法否则则用IE的写法,不可反过来判断。


6)阻止默认行为兼容

evt.preventDefault?evt.preventDefault():evt.returnValue=false;

说明: preventDefault()和returnValue()前者标准写法,后者IE写法。

解决方法:一般情况建议直接使用return false阻止,但和取消默认事件的含义是不同的。


7)事件监听兼容

说明:标准浏览器的写法addEventListener()和IE的写法attachEvent()。

解决方法:判断addEventListener是否存在,如果存在则用否则用IE8以下的版本(含IE8)的绑定方法attachEvent,removeEventListener()和detachEvent()也是一样的用法。


8)事件目标对象兼容

var src = event.target || event.srcElement;

说明: IE下,event对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性。 

解决方法:使用var src = event.target || event.srcElement;来代替IE下的event.srcElement或者Firefox下的event.target,请同时注意event的兼容性问题。


来源:千锋HTML5

1. HTML对象获取问题 3 2. const问题 3 3. event.x与event.y问题 3 4. window.location.href问题 3 5. frame问题 3 6. 模态和非模态窗口问题 3 7. firefox与IE的父元素(parentElement)的区别 3 8. document.formName.item(”itemName”) 问题 3 9. 集合类对象问题 3 10. 自定义属性问题 3 11. input.type属性问题 3 12. event.srcElement问题 3 13. body载入问题 3 14. 事件委托方法 3 15. Table操作问题 3 16. 对象宽高赋值问题 3 Ø CSS 3 1. cursor:hand VS cursor:pointer 3 2. innerText在IE中能正常工作,但在FireFox中却不行. 3 3. CSS透明 3 4. css中的width和padding 3 5. FF和IE BOX模型解释不一致导致相差2px 3 6. IE5 和IE6的BOX解释不一致 3 7. ul和ol列表缩进问题 3 8. 元素水平居中问题 3 9. Div的垂直居中问题 3 10. margin加倍的问题 3 11. IE与宽度和高度的问题 3 12. 页面的最小宽度 3 13. DIV浮动IE文本产生3象素的bug 3 14. IE捉迷藏的问题 3 15. float的div闭合;清除浮动;自适应高度 3 16. 高度不适应 3 17. IE6下图片下有空隙产生 3 18. 对齐文本与文本输入框 3 19. LI中内容超过长度后以省略号显示 3 20. 为什么web标准中IE无法设置滚动条颜色了 3 21. 为什么无法定义1px左右高度的容器 3 22. 链接(a标签)的边框与背景 3 23. 超链接访问过后hover样式就不出现的问题 3 24. FORM标签 3 25. 属性选择器(这个不能算是兼容,是隐藏css的一个bug) 3 26. 为什么FF下文本无法撑开容器的高度 3
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值