柯大侠整理的常见浏览器兼容问题

柯大侠整理的常见浏览器兼容问题event.target的兼容,引发事件的DOM元素。

HTML中的兼容问题

  • 不同浏览器的标签默认的外补丁和内补丁不同;
场景:随便写几个标签,不加样式控制的情况下,各自的marginpadding差异较大。
解决方法:上来先消除默认样式*{margin:0;padding:0;};
  • 块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大(即双倍边距bug);
场景:常见症状是IE6中后面的一块被顶到下一行;
解决方法:在float的标签样式控制中加入 display:inline;将其转化为行内属性
  • IE6中 z-index失效
场景:元素的父级元素设置的z-index1,那么其子级元素再设置z-index时会失效,其层级会继承父级元素的设置,造成某些层级调整上的BUG;
原因:z-index起作用有个小小前提,就是元素的position属性要 是relative,absolute或是fixed。
解决方案:1.position:relative改为position:absolute;2.去除浮动;3.浮动元素添加position属性(如relative,absolute等)。
  • 在写a标签的样式,写的样式没有效果,其实只是写的样式被覆盖了
正确的a标签顺序应该:link/ visited/hover/active
  • 24位的png图片,ie6中不兼容透明底儿
解决方式:使用png透明图片呗,但是需要注意的是24位的PNG图片在IE6是不支持的
解决方案有两种:1.使用8位的PNG图片;2.为IE6准备一套特殊的图片

js在不同浏览器中的兼容问题

  • 事件监听的兼容

IE不支持addEventListener; 解决:给IE使用attachEvent

var addHandler = function(el, type, handler, args) {
    if (el.addEventListener) {
        el.addEventListener(type, handler, false);
    } else if (el.attachEvent) {
        el.attachEvent('on' + type, handler);
    } else {
        el['on' + type] = handler;
    }
};
var removeHandler = function(el, type, handler, args) {
    if (el.removeEventListener) {
        el.removeEventListener(type, handler, false);
    } else if (el.detachEvent) {
        el.detachEvent('on' + type, handler);
    } else {
        el['on' + type] = null;
    }
};
  • event.target的兼容,引发事件的DOM元素。

IE6789不支持event.target; 解决方法:event.srcElement;

// 以下为兼容写法
target = event.target || event.srcElement;
  • 阻止系统默认的兼容

IE6789不支持event.preventDefault;

// 以下为兼容写法
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
  • 阻止事件冒泡的兼容

IE6789不支持event.stopPropagation;

// 以下为兼容写法
event.stopPropagation ? event.stopPropagation() : (event.cancelBubble = false);

今天的文章柯大侠整理的常见浏览器兼容问题分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15498.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注