多语言展示
当前在线:1691今日阅读:155今日分享:35

JavaScript中常见的一些兼容性问题,面试必备

在项目中经常遇到一些浏览器的兼容问题,这里总结一下平时遇到的浏览器兼容性问题, 是关于js的
工具/原料

JavaScript

方法/步骤
1

1. 事件绑定兼容写法:小结:addEventListener() 兼容:firefox、chrome、safari、opera、IE9+;attachEvent() 兼容:IE7,8 。

2

2. event事件对象兼容写法:小结:e 兼容火狐浏览器,window.event 兼容非火狐。

3

3. 获取 scrollTop兼容写法:小结:document.documentElement.scrollTop 兼容非 chrome;document.body.scrollTop 兼容 chrome。

4

4. 阻止浏览器默认事件兼容写法:小结:eventPreventDefault() 不兼容 IE6-8;event.returnValue = false; 兼容IE。

5

5. 阻止冒泡兼容写法:小结:event.stopPropagation() 不兼容 IE6-8;event.cancleBubble = true 兼容IE。

6

6. 滚轮兼容写法:小结:obj.addEventListener('DOMMouseScroll',wheel,false); 兼容火狐;obj.onmousewheel = wheel; 非火狐。

7

7. 获取className兼容写法:补充,对于为何要加上 reg.lastIndex = 0; (13行下面那一句代码),原因如下:若不加这句代码,有连续的两个类名匹配时,只会匹配第一个,则第二个不会。究起原因就是 RegExp 对象的 lastIndex 属性:该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。若使用了‘g’全局修饰符,在执行了 test 方法后,lastIndex 就会将匹配到的字符串的位置记录下来作为下一次匹配的起始位置。若是下一次匹配没有成功,则 lastIndex 置为 0。若不加'g'全局修饰符,则可以把这句代码省略掉。请点击查看demo 小结:IE浏览器不支持 getElementsByClassName() 所以只能自己写一个方法来获取 class;

推荐信息