之前有写过css知识点系列总结,觉得效果还不错,所以打算把遇到的兼容性问题也汇总到一起,就当记笔记喽(也是会持续更新滴)
2018/6/20
--js兼容性问题--
1. JSON 解析问题:
ecmascript5 通过 JSON 对象进行处理,ecmascript5 之前通过 eval 进行解析;
2. 自定义属性问题:
IE 下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;
Firefox下,只能使用 getAttribute( )获取自定义属性。
解决方法:
统一通过 getAttribute() 获取自定义属性,不过更推荐直接通过 “点” 运算符访问元素属性。
3. 事件对象兼容性问题:
非标准 IE 和 chrome 下可以通过全局 event 对象来获取,标准(包括标准 IE,chrome 等)浏览器通过事件函数的第一个参数传入。
4. 事件源对象
IE 下使用 event.srcElement,标准下使用 event.target 来获取。
5. 阻止事件冒泡
通常可以通过 event.cancelBubble = false 来阻止,但是标准推荐使用 event.stopPropagation() 方法来阻止;
6. 事件默认行为的阻止
DOM1 事件绑定中(属性 on... 的方式)可以通过 return false 来阻止,但是在 DOM2 的事件绑定中(addEventListener)中,只能通过 event.preventDefault() 方法来阻止。
-- CSS兼容性问题 --
1. 不加文档声明IE下会陷入怪异合模型解析;
2. IE6 下高度小于 19px 的元素,高度会被当作 19px 处理(可利用 overflow 解决);
3. chrome 下字体大小小于 12px 时会被当作 12px 来处理 (目前只能截图处理);
4. 在 IE8 以前的 IE 中不识别 HTML5 新增的标签; (可利用 document.createElement 来创建该标签);
5. 在 IE6 下,块元素有浮动 ,左右的 margin 值会被放大成两倍(display:inline);
6. 在 IE6,7 下 li 本身没有浮动,但是内容浮动了,li 下边就会多出间隙( li 加浮动或 vertical-align:top );