浏览器兼容性总结

2018-06-19  本文已影响0人  卧江流

作为一个前端,工作过程中总免不了会遇到一些浏览器兼容性的问题, 编码过程中对于兼容性有一定的预见性会大大提高编码效率,因此对于各大浏览器的兼容性总结还是很有必要的。

内核

平时人们上网用的浏览器五花八门,这些浏览器的内核是不尽相同的,浏览器的内核决定了浏览器对于网页的语法解释,因此不同的内核将导致不同的渲染效果,也就产生了浏览器的兼容性问题。目前的浏览器内核主要有以下几种:

浏览器的兼容性通常可以分为css样式渲染的兼容性和api差异:

常见的css兼容性问题(不考虑IE6)

常见的api兼容

var winW = document.body.clientWidth || document.documentElement.clientWidth; // 获取网页可见区域的宽度
var winH = document.body.clientHeight || document.documentElement.clientHeight; // 获取网页可见区域高度
// 以上都不包含边框的宽高,滚动条高度,offsetWidth和offsetHeight包含边框和滚动条高度
var winW = document.body.scrollWidth || document.documentElement.scrollWidth;
var winW = document.body.scrollHeight || document.documentElement.scrollHeight;
// 获取整个网页的宽高,包括滚动隐藏掉的距离
var winW = document.body.scrollTop || document.documentElement.crollTop;
var winW = document.body.scrollLeft || document.documentElement.scrollLeft;
// 浏览器被卷去的距离
var  screenH = window.screen.height; //   屏幕分辨率的高
var screenW = window.screen.width; // 屏幕分辨率的宽
var screenX = window.screenLeft; // 浏览器窗口相对于屏幕的x坐标(除FireFox)
var screenXX = window.screenX; // FireFox相对于屏幕的x坐标
var screenY= window.screenTop; // 浏览器窗口相对于屏幕的y坐标(除FireFox)
var screenYY = window.screenY; // FireFox相对于屏幕的y坐标
  // 设置监听事件
function addEvent(obj,type,fn) { // 添加事件监听,三个参数分别为对象,事件类型,事件处理函数
  if(obj.addEventListener){
      obj.addEventListener(type,fn,false); // 非IE
  }else{
      obj.attachEvent('on'+type,fn);
  }
  
}

// 取消事件监听
function removeEvent(obj,type,fn){
    if(obj.removeEventListener){
        obj.removeEventListener(type,fn,false);
    }else {
        obj.detachEvent('on'+type,fn);
    }
}

// event
document.onclick = function (ev){
  var e = ev; //  谷歌火狐支持,IE9以上支持,以下不支持
}
document.onclick = function(){
  var e = window.event; // 谷歌和IE支持,火狐不支持 
}
// 兼容写法
document.onclick = function(ev) {
  var e = ev || window.event;
}

// 阻止事件冒泡
document.onclick = function(e) {
  var e = e || window.event;
   if(e.stopPropagation){
      e.stopPropagation();
  }else{
      e.cancelBubble = true;
  }
}

// 阻止默认事件
  document.onclick = function(e){
      var e = e || window.event;
       if(e.preventDefault){
          e.preventDefault();
      }else {
          e.returnValue = 'false';
      }
  }

参考文章:
主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
浏览器兼容性问题及解决方案(CSS部分)
浏览器兼容性问题及解决方案(JS部分)

上一篇 下一篇

猜你喜欢

热点阅读