浏览器兼容问题

Safari

js
  • new Data()
    不支持'-',可换为'/'
    new Date('2017-03-12'.replace(/-/g, "/"))
  • click()
$('body').on('click', '.target', function (e) {
     alert('click');
});
  • window.open
    绕过安全机制
var winRef = window.open("", "_blank");//打开一个新的页面
App.post('',function(data){
   if(success){
     winRef.location = '';//改变页面的 location
      }
      setTimeout(loc(),800);//不等待的话无法实现
    }
})
css
  • 电话号码
    数字被识别为电话号码&电话可拨打问题
    <meta name = "format-detection" content = "telephone=no">

IE9以下

js
  • Elemment元素属性
previouElementSibling()
nextElementSibling()
...
//不支持element元素属性,使用nextSibling等可以实现
  • 文本
    不支持textConten,可用innerText

  • 注册事件
    不支持addEventListener(event, function, useCapture)
    可用attachEvent(object, eventType, function)

  • 事件对象
    不支持e.eventPhase \ e.target
    可用windows.event \ e.srcElement

  • 鼠标位置
    不支持e.pageX \ e.layerX
    只能通过计算得到

  • Array方法
    不支持array.filter(function(currentValue,index,arr), thisValue)方法
    arr.forEach(callback[, thisArg])方法

  • 操作css

//透明度
//非IE方法
ele.style.opacity = 0.2;  //0-1
//IE
ele.style.filter = "alpha(opacity=100)";

//float属性
//非IE
ele.style.float = "left";
//IE
ele.style.cssFloat = "left";
  • ajax
//定义一个 XMLHttpRequest 对象
var xhr;
if(XMLHttpRequest){
  xhr = new XMLHttpRequest();    //chrome, safari, opera, firefox
} else if(ActionXObject){
  try{
    xhr = new ActionXObject("Msxml2.XMLHTTP");   //IE 中 Msxml 插件
  }catch(e){
    xhr = new ActionXObject("Microsoft.XMLHTTP");   //IE
  }
}
css

不支持

  • 2-D and 3-D Transforms 2D、3D效果
    transform \ perspective \ backface-visibility
  • Animations 动画
  • Transitions 平滑渐变/过渡
  • Speech 朗读
  • Media Queries 媒体查询

Firefox

  • 鼠标位置
e.pageX——相对整个页面的坐标
e.layerX——相对当前坐标系的border左上角开始的坐标
e.offsetX——无
e.clientX——相对可视区域的坐标
e.x——无

其它

vue兼容问题引入[babel-polyfill]
css在CSS Hack里设置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容